Java : mysql --> Erreur java.io.EOFException

Fermé
stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009 - 23 sept. 2008 à 08:51
stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009 - 23 sept. 2008 à 15:04
Bonjour,

J'essaie de me connecter sur une base mysql depuis freebsd. J'utilise la jdk 1.5.0.16 sous freeebsd 6.2. J'utilise le mysql-connector-java-5.0.8 et j'ai aussi essayé avec le mysql-connector-java-5.1.6. La version de mysql server est la 5.0.51a. J'arrive à me connecter en commande mysql et la base fonctionne correctement. Le classpath du .jar pour le myql connector a bien été ajouté, mais dans mon programme java qui est comme cela :

String driver = "com.mysql.jdbc.Driver";
Class.forName(driver).newInstance();
String url = "jdbc:mysql://localhost/oozv";
Connection con = DriverManager.getConnection(url,"myUser","myPwd");
con.clearWarnings();
con.close();

Avec le mysql connector 5.0.8 L'erreur suivante apparait :

Erreur com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.io.EOFException
MESSAGE: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

STACKTRACE:

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1997)
at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:573)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at ticketing.main(ticketing.java:19)


Et avec le mysql connector 5.1.6, l'erreur suivante apparait :

Erreur com.mysql.jdbc.CommunicationsException: Communications link failure

Last packet sent to the server was 0 ms ago.



Alors voilà un peu la description de mon problème. Si vous avez une solution ou des idées cela m'aiderait bien.

Merci beaucoup

Steve
A voir également:

1 réponse

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 sept. 2008 à 11:40
Bonjour,

Il est possible que tu ai un problème de firewall, as-tu un firewall qui tourne lorsque tu tente d'accèder à ta base de données ?
-1
stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009
23 sept. 2008 à 11:45
Non je n'ai pas de firewall vu que le code java va s'exécuter en local sur la machin où se trouve la base...
-1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009
23 sept. 2008 à 12:02
Erf effectivement, désolé.
Dans ce cas le problème doit venir d'un timeout. Ton serveur SQL est configuré de telle manière que :
- toutes les connections / objets non utilisés après un certain temps sont automatiquement supprimé. Ce temps est configurable dans l'option "wait_timeout" de ton serveur. Essai de le configurer avec un plus grand temps (>2s par exemple pour être sur dans un premier temps) et regarde si ça change quelque chose.
-1
stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
23 sept. 2008 à 13:19
Merci,

Mais le wait_timeout est fixé à 28800 et le connect_timeout à 5. Donc je ne pense pas que ce soit cela qui bloque.

Je comprends vraiment pas ce qui peut bloquer... surtout que si je teste mone programme sur un ature serveur il n'y a pas de problème...
-1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009
23 sept. 2008 à 14:58
Si ton serveur est bien lancé, que tu n'a pas de firewall et que les paramètres sont bons je vois pas trop.
Je sais que ce problème est récurrent, tu devrais peut-être trouvé la solution qui te correspond sur le net avec une recherche plus approfondie (que celle que j'ai faite)

Sinon éventuellement tu ne peux pas changer de version pour le connecteur ou la base ?
-1
stou05 Messages postés 16 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 3 mars 2009 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
23 sept. 2008 à 15:04
J'ai fait une recherche appronfondie mais malheureusement ce problème peut venir d'un bon nombre de paramètres. Mais maintenant tout est ok, j'ai trouvé ce qui ne fonctionnait pas. Il fallait juste rajouter mysqld : ALL : allow dans le fichier /etc/hosts.allow pour que tout le monde puisse accéder au processus mysqld.

Merci de ton aide!!

Salutations

Steve
-1