2009-11-13 10 views
0

J'ai cette exception étrange étrange lors de l'émission d'un SELECT de base, en utilisant MySQL 5.1.32-communauté du code JDK 1.6.0_16. Les conditions pour répéter: à n'importe quel endroit dans mon application, si je change la date de mon système d'exploitation (Windows XP SP3) et après cela appuyez sur le bouton rafraîchir, c'est recharger des informations de la base de données, en faisant cela plusieurs fois suffisent) je reçois cette erreur:MySQL 5.1.32-communauté et JDK 1.6.0_16

Last packet sent to the server was 0 ms ago. 
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

Last packet sent to the server was 0 ms ago. 
    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:406) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3134) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1818) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537) 
    at com.mysql.jdbc.ConnectionImpl.setTransactionIsolation(ConnectionImpl.java:5148) 

suivi d'une partie de mon propre code, et poursuivi par ceci:

Caused by: java.net.SocketException: Software caused connection abort: socket write error 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3119) 
    ... 128 more 

maintenant, je l'ai déjà google et j'ai trouvé zéro solutions. J'ai déjà essayé d'utiliser "127.0.0.1" au lieu de "localhost" sans résultat. Aussi, j'ai pu tester ceci sur MySQL 4.12 et JRE 1.4 et le problème est inexistant là. J'utilise un JDBC simple, une connexion unique à DB (pas de connexions groupées) et mes tables SQL utilisent le type InnoDB. Toute aide sera très appréciée car je suis bloqué par ce phénomène.

Répondre

1

En fonction de ce que vous avez décrit, le pilote utilise l'heure de l'OS pour temporiser une connexion ou une opération réseau.

La solution de contournement est susceptible de simplement intercepter l'exception et réessayer de configurer la connexion.

+0

Hmm.peut-il être aussi simple? Comment devrais-je réessayer cela? En fermant la connexion actuelle et ré-initier? – hypercube

+0

Salut! Ça a marché! Merci mec. Meilleure réponse récompensée! – hypercube