第一次遇到Mysql的BUG,困扰我好久了。

原创 2005年05月20日 17:01:00

第一次遇到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
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(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1449)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1826)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1098)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1192)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1153)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2048)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2017)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1998)
at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:516)
at org.apache.struts.legacy.GenericConnection.setAutoCommit(GenericConnection.java:562)
at com.euwsoftware.autocreatewebsite.database.mysql.MysqlDAOFactory.getConnection(MysqlDAOFactory.java:113)

** 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.

java工程连接远程MySQL数据库报错:Communications link failure due to underlying exception

MySQL数据库远程连接错误
  • xiulongshan
  • xiulongshan
  • 2017年01月12日 17:00
  • 2016

mysql: Communications link failure解决

mysql: Communications link failure解决   使用Connector/J连接MySQL,程序运行较长时间后就会报以下错误:    Communications ...
  • l1028386804
  • l1028386804
  • 2015年03月24日 09:46
  • 3041

Communications link failure错误分析

1.异常描述 Java代码   Exception:  com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicati...
  • sxhong
  • sxhong
  • 2014年03月18日 09:29
  • 5175

困扰我16小时的bug

昨天遇到一个问题,关于greendao的,我在一张表里面加了一个字段,然后各种编译各种卸载重装,导出手机中的数据库仍然是原来的表,查表结构和实体结构都已经存在那个字段了,但是还是插入数据报那个字段不存...
  • shirleyAcount
  • shirleyAcount
  • 2013年12月24日 15:57
  • 347

新手Python上路 不断更新碰到的各类bug

Greetings, 最近某公司的OA强制要求C++或者Python,尼玛赤裸裸的歧视Java选手,不能忍啊,虽然说学C++这样开发语言通吃了,不过想想当年学C语言那指针蛋疼的操作,**P *&p...
  • fantasiasango
  • fantasiasango
  • 2016年09月22日 02:19
  • 773

Communications link failure问题,求指教!!

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet se...
  • cleverlzc
  • cleverlzc
  • 2013年04月29日 20:24
  • 1706

vs2013 MFC Socket UDP 简单聊天工具

vs2013 MFC Socket UDP 简单聊天工具
  • Dopamy_BusyMonkey
  • Dopamy_BusyMonkey
  • 2015年11月26日 17:36
  • 4578

遇到BUG时你应该怎么做

下面是拜读Think Python 中关于代码错误的调试方法的一些记录,特意摘出来以便告诫自己 当你的程序不工作时, 1.首先你需要问自己这些问题: ˆ 有没有什么程序应该做却没有发生?...
  • baidu_29609961
  • baidu_29609961
  • 2017年08月26日 17:05
  • 213

项目开发中遇到的--Bug知识整理!

====第一个Bug====》》  目前测试出现在IE7,IE6中。     问题:标签,经测试,不兼容IE7,IE6. (个人建议不要使用button标签)     解决方案:改成 /...
  • andyliulin
  • andyliulin
  • 2016年08月19日 13:31
  • 843

TCP连接的状态详解以及故障排查

linux查看tcp的状态命令: 1)、netstat -nat 查看TCP各个状态的数量 2)、lsof -i:port 可以检测到打开套接字的状况 3)、 sar -n SOCK 查看tc...
  • hguisu
  • hguisu
  • 2014年08月20日 07:06
  • 133246
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第一次遇到Mysql的BUG,困扰我好久了。
举报原因:
原因补充:

(最多只允许输入30个字)