com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: falha no link de comunicações

225

Estou trabalhando para que meu banco de dados fale com meus programas Java.

Alguém pode me dar um programa de amostra rápido e sujo usando o JDBC?

Estou recebendo um erro estupendo:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2260)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:787)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:357)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:207)
    at SqlTest.main(SqlTest.java:22)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
    ... 12 more
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:218)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293)
    ... 13 more

Conteúdo do arquivo de teste:

import com.mysql.jdbc.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SqlTest {

    public static void main(String [] args) throws Exception {
        // Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
        // // edit the jdbc url 
        Connection conn = DriverManager.getConnection( 
            "jdbc:mysql://localhost:3306/projects?user=user1&password=123");
        // Statement st = conn.createStatement();
        // ResultSet rs = st.executeQuery( "select * from table" );

        System.out.println("Connected?");
    }
}
Josh K
fonte
17
Eu fui estúpido. Servidor MySQL não foi iniciado :( Foi bem sucedida depois de iniciá-lo.
akfaisel

Respostas:

251

Então, você tem um

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: falha no link de comunicações
java.net.ConnectException: Conexão recusada

Estou citando esta resposta, que também contém um tutorial passo a passo do MySQL + JDBC:

Se você obtiver um SQLException: Connection refusedou mais Connection timed outespecífico do MySQL CommunicationsException: Communications link failure, significa que o banco de dados não é acessível. Isso pode ter uma ou mais das seguintes causas:

  1. O endereço IP ou o nome do host no URL JDBC está incorreto.
  2. O nome do host na URL JDBC não é reconhecido pelo servidor DNS local.
  3. O número da porta está ausente ou incorreto no URL JDBC.
  4. O servidor de banco de dados está inoperante.
  5. O servidor de banco de dados não aceita conexões TCP / IP.
  6. O servidor do banco de dados ficou sem conexões.
  7. Algo entre Java e DB está bloqueando as conexões, por exemplo, um firewall ou proxy.

Para resolver um ou outro, siga os seguintes conselhos:

  1. Verifique e teste-os com ping.
  2. Atualize o DNS ou use o endereço IP no URL JDBC.
  3. Verifique-o com base no my.cnfbanco de dados MySQL.
  4. Inicie o banco de dados.
  5. Verifique se o mysqld foi iniciado sem o --skip-networking option.
  6. Reinicie o banco de dados e corrija seu código de forma que ele feche as conexões finally.
  7. Desative o firewall e / ou configure o firewall / proxy para permitir / encaminhar a porta.

Veja também:

BalusC
fonte
4
O MAMP / MAMP Pro define o MAMP_skip-networking_MAMP por padrão. Você tem que desativar essa linha em seu my.cfn
Jurik
6
Não neste caso, mas uma falha no link de comunicação também ocorre quando você está usando um pool de conexões e as conexões são fechadas devido à inatividade prolongada. Somente nesse caso, ele diz "O último pacote foi recebido alguns" X "segundos atrás"
nikel
@nikel Os encadeamentos no conjunto de conexões não devem ser mantidos ativos disparando a consulta de validação "selecione 1"? Por que eles seriam fechados por inatividade prolongada quando configuramos o evictor para executar em intervalos de tempo mais curtos que o tempo limite do servidor mysql?
Farhad
Sim, uma consulta de validação corrige isso. Meu ponto era sobre o caso quando ele não está definido e conexões no get piscina expirou devido a inatividade
nikel
Às vezes, falta uma porta na cadeia de conexão e o driver tenta se conectar à porta 3306 padrão do mysql e falha se o mysql não estiver em execução nessa porta. Foi o meu problema, então eu devo mencionar caso alguém ache útil.
Abdul Mannan
10

Eu pego essa exceção quando o Java está fora da pilha. Se eu tentar colocar na RAM muitos itens de dados - primeiro pego " Falha no link de comunicação " e depois " OutOfMemoryError ".

Eu registrei e diminuo o consumo de memória (apague 1/2 dados) e está tudo ok.

user1694306
fonte
9

No meu caso, eu precisei substituir o Localhost pelo endereço IP do servidor de banco de dados real

Ao invés de

 Connection con = DriverManager.getConnection(
 "jdbc:mysql://localhost:3306/DBname", "root", "root");

eu precisei

 Connection con = DriverManager.getConnection(
 "jdbc:mysql://192.100.0.000:3306/DBname", "root", "root");
sureshAngamuthu
fonte
Na atualização mais recente 4/5/18: Atualmente, estou usando o MySQL Workbench 6.3. Eu vim aqui para verificar a solução, mas a encontrei por conta própria, é só que o servidor MySQL não está funcionando ou está parado. Eu reiniciei meu servidor, ele funcionou como um encanto.
Abhishek Ekaanth
7
Esta é a 'melhor solução' por quê? Que problema resolve e como?
Marquês de Lorne
esta solução não pode gerar dataframes
Alan
8

Essa com.mysql.jdbc.exceptions.jdbc4.CommunicationsExceptionexceção ocorre se a conexão com o banco de dados estiver inativa por muito tempo.

Essa conexão inativa retorna true, connection.isClosed();mas se tentarmos executar a instrução, ela disparará essa exceção, por isso vou sugerir que vá com o pool de banco de dados.

Yogesh Funde
fonte
2
Isso também ocorre por outros motivos, como 'conexão recusada'.
Marquês de Lorne
6

Estou com o mesmo problema há horas. Estou usando o servidor MAMP

Em vez de usar localhost: [Apache Port], use sua porta MySQL.

Abaixo está a porta MySQL padrão para o servidor MAMP.

String url = "jdbc:mysql://localhost:8889/db_name";

Connection conn = DriverManager.getConnection(url, dbUsername, dbPassword);
Abdul Rahim Mohamad
fonte
se você tiver o mamp antes de instalar o Mysql, tente este método #
DAVIS BENNY 15MIS0426
5

Talvez eu esteja latindo para a árvore errada aqui, mas sua exceção parece indicar que o servidor MySQL não está disponível.

Exceção no encadeamento "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: falha no link de comunicaçõesO último pacote enviado com êxito ao servidor foi 0 milissegundos atrás. O driver não recebeu nenhum pacote do servidor. às ...

O que acontece se você tentar (a partir do terminal)

mysql -u username -p

Você será solicitado a senha associada ao nome de usuário. Depois de fornecer a senha correta, o cliente mysql se conecta?

Você pode ter que iniciar o MySQL a partir das Preferências, se não. Você também pode configurá-lo para ser executado na inicialização.

Karl Walsh
fonte
1
Estou usando o MAMP para executar meu servidor MySQL. Isso seria um problema?
Josh K
Quando conecto (via Sequal Pro) ao meu localhost, uso o nome de usuário / senha corretos e ele funciona bem.
Josh K
5

No meu caso, a versão do mysql-connector-javaera muito antiga.

Na minha demonstração, de alguma forma eu uso mysql-connector-javaassim:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>

Mas no ambiente de desenvolvimento, eu uso isso:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.31</version>
</dependency>

E minha versão do MySQL era 5.1.48 (sim, é antiga, apenas para imitar a versão do produto). Então, eu encontrei o mesmo erro.

Como o motivo é encontrado, a solução também é encontrada. Combine a versão!

shellbye
fonte
4
Improvável. Todas essas versões de driver devem ser compatíveis com versões anteriores.
Marquês de Lorne
1
Esse problema parece estar corrigido nos novos conectores mysql, consulte stackoverflow.com/questions/14559794/…
Nishi
O mesmo caso para mim. A versão do driver é para o MySQL 5, enquanto a versão do servidor é 8. Então, atualizei a versão do jar e o problema foi resolvido.
edenPan
4

Eu recebi o mesmo erro porque estava tentando executar meu programa sem iniciar o servidor mysql.

Depois de iniciar o servidor mysql, tudo deu certo.

rs2012
fonte
4

Respostas anteriores são apropriadas. Gostaria também de apontar para uma questão mais genérica.

Eu enfrentei um problema semelhante e o motivo foi uma restrição de rede da minha empresa.

A mesma conexão estava obtendo sucesso quando eu estava em qualquer outra rede.

user3251882
fonte
1
Este ponteiro resolveu meu problema, especificando que 'localhost' estava funcionando quando eu me conectava à VPN, mas o mesmo não funcionaria se eu me desconectar da VPN, no entanto, eu o
corrigi
4

Atualize seu endereço IP no arquivo /etc/mysql/my.cnf

bind-address  = 0.0.0.0

Reinicie os serviços mysql deamon e mysql.

Sreedhar GS
fonte
1
Editado para usar um endereço de ligação válido
OneCricketeer 03/01
3

Faça o download do MySQL-JDBC-Type-4-Treiber (ig 'mysql-connector-java-5.1.11-bin.jar' em 'mysql-connector-java-5.1.11.zip') no Mysql .

Você precisa incluir o jar do driver durante a compilação e o tempo de execução em seu caminho de classe.

Class.forName( "com.mysql.jdbc.Driver" ); // do this in init
// edit the jdbc url 
Connection conn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", username, password );
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( "select * from table" );
empilhador
fonte
Não, me dá uma tempestade de erros por não encontrar nada. Seria possível importar isso sem o arquivo JAR?
18710 Josh K
@ Josh isso funciona, você realmente só precisa configurar seu caminho de classe corretamente. (Ou copiar o jar em seu diretório% JAVA_HOME% \ jre \ lib \ ext, mas isso é considerado má-prática)
empilhador
3

Este erro também pode ocorrer se o Java tentar se conectar ao MySQL por SSL, mas algo der errado. (No meu caso, eu estava configurando conjuntos de conexões Payara Server 5.193.1 para o MySQL.)

Algumas pessoas sugeriram configuração useSSL=false. No entanto, desde a versão Connector / J 8.0.13, essa configuração está obsoleta. Aqui está um trecho das propriedades de configuração do MySQL Connector / J 8.0 :

sslMode

Por padrão, as conexões de rede são criptografadas em SSL; essa propriedade permite que conexões seguras sejam desativadas ou que diferentes níveis de segurança sejam escolhidos. Os seguintes valores são permitidos: DISABLED- Estabelecer conexões não criptografadas; PREFERRED- (padrão) Estabeleça conexões criptografadas se o servidor as habilitar; caso contrário, volte a conexões não criptografadas; REQUIRED- Estabeleça conexões seguras se o servidor as habilitar, falhará de outra forma; VERIFY_CA- REQUIREDVerifique, mas adicionalmente, o certificado TLS do servidor em relação aos certificados da Autoridade de Certificação (CA) configurados; VERIFY_IDENTITY- Como VERIFY_CA, mas verifique também se o certificado do servidor corresponde ao host ao qual a conexão foi tentada.

Esta propriedade substituídas as propriedades obsoletos legados useSSL, requireSSLe verifyServerCertificate, que ainda são aceitos, mas traduzidos para um valor para sslModese sslModenão está definido explicitamente: useSSL=falseé traduzido para sslMode=DISABLED; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"}é traduzido para sslMode=PREFERRED; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"}é traduzido para sslMode=REQUIRED; {"useSSL=true" AND "verifyServerCertificate=true"}é traduzido para sslMode=VERIFY_CA. Não há configurações herdadas equivalentes para sslMode=VERIFY_IDENTITY. Observe que, para TODAS as versões do servidor, a configuração padrão de sslModeé PREFERREDe é equivalente às configurações herdadas de , que são diferentes das configurações padrão do Connector / J 8.0.12 e anterior em algumas situações. Os aplicativos que continuam a usar as propriedades herdadas e dependem de suas configurações padrão antigas devem ser revisados.useSSL=true , requireSSL=falseeverifyServerCertificate=false

As propriedades herdadas serão ignoradas se sslModedefinidas explicitamente. Se nenhum sslModeou useSSLfor definido explicitamente, a configuração padrão será sslMode=PREFERREDaplicada.

Padrão :PREFERRED

Desde a versão : 8.0.13

Portanto, no meu caso, a configuração sslMode=DISABLEDera tudo o que eu precisava para resolver o problema. Isso foi em uma máquina de teste. Mas para a produção, a solução segura seria configurar adequadamente o cliente Java e o servidor MySQL para usar SSL.


Observe que, ao desativar o SSL, você também pode precisar definir allowPublicKeyRetrieval=true. (Novamente, não é uma decisão sábia do ponto de vista da segurança). Mais informações são fornecidas em MySQL ConnectionString Options :

AllowPublicKeyRetrieval

Se a conta do usuário usa sha256_passwordautenticação, a senha deve ser protegida durante a transmissão; O TLS é o mecanismo preferido para isso, mas se não estiver disponível, a criptografia de chave pública RSA será usada. Para especificar a chave pública RSA do servidor, use a ServerRSAPublicKeyFileconfiguração de cadeia de conexão ou defina AllowPublicKeyRetrieval=Truepara permitir que o cliente solicite automaticamente a chave pública do servidor. Observe que isso AllowPublicKeyRetrieval=Truepode permitir que um proxy mal-intencionado execute um ataque MITM para obter a senha em texto sem formatação; portanto, é False por padrão e deve ser ativada explicitamente.

MS Dousti
fonte
Thread relevante do Payara Server GitHub .
MS Dousti 11/11/19
3

Meu mesmo problema é resolvido pelas seguintes etapas:

  1. Vamos para my.cnf

    vi /etc/mysql/my.cnf
  2. Modifique seu endereço de ligação

    "bind-address = 0.0.0.0"
  3. Reinicie o MySQL

    sudo /etc/init.d/mysql restart
Haimei
fonte
2

Se você estiver usando o servidor WAMPou XAMPpara instalar o banco de dados mysql. Então você deve iniciar explicitamente o mysql sever, caso contrário ele mostrará com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureao se conectar com o banco de dados

xrcwrn
fonte
2

Eu resolvi esse problema de uma maneira fácil, que funcionou para mim. Eu tive o problema seme "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: falha no link de comunicações". No meu arquivo db.properties, eu tinha o seguinte: url: jdbc: mysql: // localhost: 90 / myDB, removia apenas o URL da porta, resultando desta maneira url: jdbc: mysql: // localhost / myDB e funcionava para mim .

Dario Castro
fonte
2

Isso aconteceu comigo quando mudei a porta mysql de 3306 para 3307 nos arquivos my.ini e php.ini, mas depois de alterar as portas (3307-> 3306), funcionou bem novamente.

MrPencil
fonte
2

Se você alterou sua porta, esse tipo de erro é exibido "com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: falha no link de comunicação" Verifique o número da porta

Maheshkumar.V
fonte
1

Apenas experimentei isso.

Preciso fazê-lo funcionar da seguinte maneira: (isso pode ser colocado no inicializador de bloco estático)

static{ // would have to be surrounded by try catch
    Class.forName("com.mysql.jdbc.Driver");   // this will load the class Driver
}

Também obtendo a conexão através de:

conn = DriverManager.getConnection(DBURL,<username>,<password>);

em vez de especificar os parâmetros de login

  Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/projects?user=user1&password=123");

Saudações.

mel3kings
fonte
2
O bloco estático não é necessário desde 2007 e você pode especificar os parâmetros de login de qualquer maneira.
Marquês de Lorne
1

Tente mudar localhostpara 127.0.0.1.

O host local seria resolvido para ::1. E o MySQL não pode ser conectado via IPv6 por padrão.

E aqui está a saída de telnet localhost 3306:

$ telnet localhost 3306
Trying ::1...

E não há resposta do servidor MySQL.

Obviamente, verifique se o servidor MySQL está em execução.

Haozhe Xie
fonte
Na verdade, isso é um problema com o arquivo / etc / hosts, não com o Mysql
OneCricketeer
@ cricket_007 Por padrão, o host local é resolvido para :: 1 em vez de 127.0.0.1.
Haozhe Xie
1
Claro, apenas se o ipv6 estiver ativado e dependendo do arquivo de hosts
OneCricketeer
1
dbhost=jdbc:mysql://172.18.23.100:3306/yourdatabase?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
user=root
password=Password#321

con = DriverManager.getConnection(dbhost, user, password);

se o mysql versão 8 ou superior for atualizado pelo usuário

Ravinath
fonte
esta é a resposta certa, basta adicionar useSSL = false à cadeia de conexão ao usar o driver MySQL 8 ou superior.
Mohannd 31/12/19
1

Para Chamada Remota para Mysql

  1. Adicione usuário remoto ao Mysql para, por exemplo, IP = remoteIP:

    mysql -u xxxx -p //local coonection to mysql
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'theNewUser'@'remoteIP' IDENTIFIED BY 'passWord';
    //Query OK, 0 rows affected (xx sec)
    mysql> FLUSH PRIVILEGES;
    //Query OK, 0 rows affected
  2. Permitir acesso remoto ao Mysql (por padrão, todas as chamadas externas não são permitidas):

    Edit 
    /etc/mysql/mysql.conf.d/mysqld.cnf    or    /etc/mysql/my.cnf
    Change line:  bind-address = 127.0.0.1   to
                  bind-address = 0.0.0.0
    Restart Mysql: /etc/init.d/mysql restart
  3. Para a versão mais recente do driver JDBC, o JDBC:

    jdbc.url='jdbc:mysql://remoteIP:3306/yourDbInstance?autoReconnect=true&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC'
    jdbc.user='theNewUser'
Yugerten
fonte
0

Eu tive o mesmo problema e aqui está como foi corrigido:

  1. Meu .jsp estava chamando atributos que eu ainda não havia definido no servlet.
  2. Eu tinha dois nomes de coluna que eu estava passando para um objeto ResultSet (getString("columnName"))que não correspondia aos nomes de coluna no meu banco de dados.

Não sei exatamente qual resolveu o problema, mas funcionou. Além disso, certifique-se de que você criar um novo Statemente ResultSetpara cada consulta de tabela.

user3427633
fonte
1
(1) certamente não causa esse problema.
Marquês de Lorne
0

Pode ser um problema simples de jar. pode ser que você esteja usando um antigo mysql-connector-java-XXX-bin.jarque não seja suportado pela sua versão atual do mysql. eu usei mysql-connector-java-5.1.18-bin.jarcomo estou usando mysql 5.5e esse problema foi resolvido para mim.

Ankit Jain
fonte
1
Sim, pode haver chance de incompatibilidade de jar.
Kiran Nunna
Todas essas versões de driver devem ser compatíveis.
Marquês de Lorne
0

Talvez você não tenha iniciado o Mysql e o Apache Server. Depois que iniciei o servidor Apache e o Mysql no painel de controle do XAMPP, a conexão foi estabelecida com sucesso.

Boa sorte!

shivam gupta
fonte
0

O que resolvi para mim está fazendo duas coisas: 1. crie um novo usuário que não seja root com alguma senha usando os seguintes connads:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

2. comente a linha de endereço IP no mysqld.conf

em seguida, conecte-se com o novo nome de usuário e senha. deveria funcionar.

Abdul Khalid
fonte
Você precisará repetir isso para todos os usuários remotos ou adicionar um curinga em vez de Localhost
OneCricketeer
0

Ele estava tentando se conectar a uma versão mais antiga do MySQL ('version', '5.1.73'); quando você usa uma versão mais recente do driver, você recebe um erro que diz para usar o "com.mysql.cj.jdbc.Driver ou mesmo que você não precisa especificar qual você usa:

Carregando a classe com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver '. O driver é registrado automaticamente via SPI e o carregamento manual da classe de driver geralmente não é necessário.

Alterei a declaração para usar a versão 5.1.38 do mysql-connector-java e, no código, mantive o com.mysql.jdbc.Driver .

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

Tudo começou quando eu vi a resposta do Ankit Jain

estellezg
fonte
0

Meu firewall estava bloqueando a publicação 3307 que meu MySQL escutava. Alterei a porta de 3307 para 3306. Em seguida, posso conectar-me com sucesso a um banco de dados.

Michal Šípek
fonte
0

No meu MacBook, tenho solucionet este erro apenas quando reinstalar a nova versão do eclipse EE e remover servidores locais como xamp mysql ou mamp, mas usar apenas um deles ...

m Piroli
fonte
0

No meu caso, eu tive que estabelecer um túnel ssh no banco de dados remoto e todas as configurações estavam corretas e testar a conexão com o PhpStorm também teve êxito. E também o esquema foi carregado, mas não os dados. Em vez disso, obtive:

[08S01] Communications link failure. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Nenhuma das sugestões acima funcionou. Por qualquer motivo, tentei resolver o problema simplesmente reiniciando o PhpStorm e pronto!

Louco por tecnologia
fonte
0

Eu estava recebendo vários erros, como:

  • CommunicationsException: Communications link failure
  • java.lang.NullPointerException: Attempt to invoke interface method 'java.sql.Statement java.sql.Connection.createStatement()' on a null object reference at.

Eu tive que adicionar:

  • No AndroidManifest.xml, inclua <uses-permission android:name="android.permission.INTERNET"/>logo após a tag de manifesto de abertura.

  • Adicione o driver JDBC às dependências do Gradle (ou Maven).

Daniel Segura
fonte