web-dev-qa-db-fra.com

MySql avec erreur Java. Le dernier paquet envoyé avec succès au serveur était en millisecondes.

J'ai beaucoup lu sur cette exception, mais je ne peux pas résoudre mon problème.

Le serveur Mysql fonctionne. 

Je peux me connecter à partir de NetBeans, mais je ne peux pas me connecter à partir de code Java.

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:57)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.Java:1116)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.Java:344)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.Java:2332)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.Java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.Java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.Java:792)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.Java:47)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:57)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.Java:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:305)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:579)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:243)
    at javaapplication3.JavaApplication3.main(JavaApplication3.Java:32)
Caused by: Java.net.SocketException: Permission denied: connect
    at Java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at Java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.Java:69)
    at Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:339)
    at Java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.Java:200)
    at Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:182)
    at Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:157)
    at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:391)
    at Java.net.Socket.connect(Socket.Java:579)
    at Java.net.Socket.connect(Socket.Java:528)
    at Java.net.Socket.<init>(Socket.Java:425)
    at Java.net.Socket.<init>(Socket.Java:241)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.Java:257)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.Java:294)
    ... 15 more
Java Result: 1

J'attrape cette exception avec n'importe quel moyen de se connecter à Mysql à partir de code Java, mais de MysqlWorkBench et de NetBeans est OK .. Je n'ai pas de pare-feu. J'ai essayé 127.0.0.1, le résultat est le même. 

13
user1113159

Le problème est principalement dû au fait que le service MySQL n’a pas été démarré, assurez-vous qu’il fonctionne, sinon exécutez ce CMD avec des privilèges d’administrateur pour le démarrer:

sc start [Your MySQL Service name]
6
Marwen Trabelsi

essayez de spécifier le port dans 

conn = DriverManager.getConnection("jdbc:mysql://localhost/mysql?"
                                        + "user=root&password=onelife");

Je pense que vous devriez avoir quelque chose comme ça: 

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?"
                                            + "user=root&password=onelife");

également le numéro de port dans mon exemple (3306) c'est le port par défaut vous pouvez le changer pendant l'installation de mysql

Et je pense que le meilleur moyen de spécifier un mot de passe et un utilisateur distinct de l’url est le suivant:

connection = DriverManager.getConnection(url, login, password);
6
Aleksei Bulgak

Rechercher dans le fichier my.cnf et commenter la ligne

skip-networking

à

#skip-networking

Redémarrer mysql

5
Alan Cruz

Ce problème a été résolu avec les nouveaux connecteurs mysql. Veuillez utiliser http://mvnrepository.com/artifact/mysql/mysql-connector-Java/5.1.38

J'avais l'habitude d'obtenir cette erreur après la mise à jour du fichier jar du connecteur, problème résolu. 

3
lastextinct

Essayez les suggestions suivantes:

1) votre machine peut avoir une adresse IP statique; mappez cette adresse IP dans le fichier hosts à localhost.
2) essayez de vous connecter depuis un ordinateur ou depuis le réseau via la commande mysql; Si la connexion aboutit, cela signifie que mysql fonctionne correctement.

3
M S Parmar

Il y a deux choses

  1. Désactivez le pare-feu, ajoutez une exception ou vérifiez si vous avez le bon fichier de pilote. Désactiver les antivirus éventuels

  2. et assurez-vous également que votre type de pilote est mysql.jdbc.driver.

2
danielad

Il semble que votre code Java utilisant IPv6 au lieu de IPv4, essayez d’utiliser 127.0.0.1 au lieu de localhost. Ex: votre chaîne de connexion doit être comme ci-dessous

jdbc:mysql://127.0.0.1:3306/expeditor?zeroDateTimeBehavior=convertToNull&user=root&password=onelife

P.S: chaîne de connexion de l'URL de mise à jour

2
Evgeniy Fitsner