Ho usato java per interrogare alcuni record da Mysql. Ma in alcune query di una durata, ho incontrato un problema che ha reso la query non riuscita, ma in altri, ha richiesto con successo. Il messaggio di errore è il prossimo:CommunicationsException: Errore del collegamento di comunicazione
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 90 milliseconds ago. The last packet sent successfully to the server was 1,674 milliseconds 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:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3090)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2979)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3520)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:935)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1433)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2924)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2619)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1788)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2209)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2619)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2569)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1521)
......
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.io.IOException: Packets received out of order
at com.mysql.jdbc.MysqlIO.readRemainingMultiPackets(MysqlIO.java:3152)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3077)
... 23 more
ho provato un po 'di metodo, tali come:
- set
max_allowed_packet = 128 * 1024 * 1024
in/etc/my.conf
- aggiungi
?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
al mio url collegamento
ma non succede nulla .
miei ambienti è:
- Mysql: 5.5.3-m3-log distribuzione Fonte
- Java: 1.6.0_16
- Jdk: HotSpot (TM) a 64 bit di server VM (build 14.2 -b01, modalità mista)
- JDBC: mysql-connector-java-5.1.18
Nell'operazione, ho usato 'group_concat' e la mia stringa concat è molto lunga. E provo anche la query usando php, funziona bene. Quando ho impostato 'group_concat_max_len' <32M, verrà tagliato alcuni dati per essere stato tagliato da GROUP_CONCAT() e restituito successo. Ma se group_concat_max_len> 32M, non è riuscito. – zhouzuan2k
possibile duplicato di [MySQL-JDBC: Errore collegamento comunicazioni] (http://stackoverflow.com/questions/2121829/mysql-jdbc-communications-link-failure) – CloudyMarble