第一次遇到Mysql的BUG,困扰我好久了。
第一次遇到Mysql的BUG,困扰我好久了。
| 采用struts连接缓冲池取得数据库连接,在第一次getConnection()的时候 有时候出现一下错误 java.sql.SQLException: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed ** BEGIN NESTED EXCEPTION ** java.net.SocketException STACKTRACE: java.net.SocketException: Software caused connection abort: recv failed ** END NESTED EXCEPTION ** |
为解决方法(转自 http://bugs.mysql.com/bug.php?id=5020 )
MySQL Bugs: #5020: autoReconnect / autoReconnectForPools broken since 3.0.11
| Description: Our Systems run 24 Hours a Day, but at night nobody connects, so the Socket Connections time out. At morning the first attempts to do anything (e.g. login) fail until we are able to close() and create..() the Connections again. This did not happen until after 3.0.11 How to repeat: Connection reconnectableConn = DriverManager.getConnection( "jdbc:mysql:///test?autoReconnect=true"); rs = reconnectableConn.createStatement().executeQuery("SELECT 1"); assertTrue (rs.next()); assertEquals(1, rs.getInt(1)); restartMySQL(); // Actually: NET STOP MySQL; NET START MySQL; rs = reconnectableConn.createStatement().executeQuery("SELECT 1"); assertTrue (rs.next()); assertEquals(1, rs.getInt(1)); ... java.sql.SQLException: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed ** BEGIN NESTED EXCEPTION ** java.net.SocketException MESSAGE: Software caused connection abort: recv failed STACKTRACE: java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:183) at java.io.BufferedInputStream.read1(BufferedInputStream.java:222) at java.io.BufferedInputStream.read(BufferedInputStream.java:277) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1385) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1532) ... ** END NESTED EXCEPTION ** at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1707) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1923) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1163) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1272) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1218) at com.mysql.jdbc.Connection.execSQL(Connection.java:2233) at com.mysql.jdbc.Connection.execSQL(Connection.java:2181) at com.mysql.jdbc.Statement.executeQuery(Statement.java:1159) Suggested fix: Connections should properly reconnect when the Socket times out or the connection is lost some other way. Please contact me for a complete TestSuite based on your Regression Tests. |
- 最新文章
- hibernate基础_7[05-15]
- JSP中文乱码问题的解决[05-15]
- J2EE项目危机【翻译】 -避免这10项J2EE危机来确保你..[05-15]
- JCreator 使用技巧-3[05-15]
- Eclipse 运行命令行参数大全[05-15]
- Java语言编码规范(Java Code Conventio..[05-15]
- 相关文章
- [原创] MySQL支持UTF-8编码全攻略[05-15]
- 用标准的SQL语句实现查询记录分页[05-15]
- sqlserver 2000h 和 jdbc 的融合问题[05-15]
- JAVA类型和SQL类型的匹配[05-15]
- 谈JDBC SQLSERVER"Error est..[05-15]
- Linux上配置JDK TOMCAT MYSQL[05-15]
