Ich verwendete Java, um einige Datensätze von Mysql abzufragen. Aber in einigen Abfragen einer Dauer, triffe ich ein Problem, das Abfrage fehlgeschlagen, aber in anderen Abfragen erfolgreich. Die Fehlermeldung lautet weiter:CommunicationsException: Kommunikationsverbindungsfehler
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
ich eine Methode versucht haben, solche wie:
- gesetzt
max_allowed_packet = 128 * 1024 * 1024
in/etc/my.conf
?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
meiner Verbindung url hinzufügen
aber es passiert nichts .
Meine Umgebungen ist:
- Mysql: 5.5.3-m3-log Verteilung Quelle
- Java: 1.6.0_16
- Jdk: HotSpot (TM) 64-Bit Server VM (Build 14.2 -b01, mixed mode)
- JDBC: mysql-connector-java-5.1.18
In der Operation habe ich 'group_concat' verwendet und meine concat-Zeichenfolge ist sehr lang. Und ich versuche auch die Abfrage mit PHP, es funktioniert gut. Wenn ich 'group_concat_max_len' <32M einstelle, wird es einige Daten schneiden, indem es von GROUP_CONCAT() abgeschnitten wurde und Erfolg zurückgibt. Aber wenn group_concat_max_len> 32M, ist es fehlgeschlagen. – zhouzuan2k
mögliches Duplikat von [MySQL-JDBC: Kommunikationsverbindungsfehler] (http://stackoverflow.com/questions/2121829/mysql-jdbc-communications-link-failure) – CloudyMarble