Tôi đã sử dụng java để truy vấn một số bản ghi từ Mysql. Nhưng trong một số truy vấn của một thời gian, tôi gặp một vấn đề mà làm cho truy vấn thất bại, nhưng trong những người khác, nó truy vấn thành công. Các thông báo lỗi là tiếp theo:CommunicationsException: Lỗi liên kết truyền thông
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
Tôi đã thử một số phương pháp, chẳng hạn như:
- thiết
max_allowed_packet = 128 * 1024 * 1024
trong/etc/my.conf
- thêm
?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
để url kết nối của tôi
nhưng có gì xảy ra .
môi trường của tôi là:
- Mysql: 5.5.3-m3-log phân phối Nguồn
- Java: 1.6.0_16
- JDK: HotSpot (TM) 64-Bit Server VM (xây dựng 14,2 -b01, chế độ hỗn hợp)
- JDBC: mysql-connector-java-5.1.18
Trong hoạt động, tôi đã sử dụng 'group_concat' và chuỗi concat của tôi rất dài. Và tôi cũng thử truy vấn bằng cách sử dụng php, nó hoạt động tốt. Khi tôi đặt 'group_concat_max_len' <32M, nó sẽ cắt một số dữ liệu bằng cách cắt bởi GROUP_CONCAT() và trả về thành công. Nhưng nếu group_concat_max_len> 32M, nó không thành công. – zhouzuan2k
có thể trùng lặp của [MySQL-JDBC: Lỗi liên kết truyền thông] (http://stackoverflow.com/questions/2121829/mysql-jdbc-communications-link-failure) – CloudyMarble