当前位置: 代码迷 >> Java Web开发 >> MySQL数据库连接池连接失效有关问题(DBCP)
  详细解决方案

MySQL数据库连接池连接失效有关问题(DBCP)

热度:192   发布时间:2016-04-16 22:07:31.0
MySQL数据库连接池连接失效问题(DBCP)
本帖最后由 mhxy199288 于 2014-07-18 09:54:04 编辑
遇到一个很奇怪的问题,项目的数据库连接池使用的是DBCP,隔一天再去访问的时候就会出现
 Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 68,764,844 milliseconds ago.  The last packet sent successfully to the server was 68,764,844 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
;这个异常,百度google均说是因为连接8小时失效,但连接池认为他仍然有效所以才报错。
我也修改了配置文件
testOnBorrow=true

testOnReturn=true

testWhileIdle=true

validationQuery=select 1 FROM testconnection

timeBetweenEvictionRunsMillis=300000

numTestsPerEvictionRun=36

minEvictableIdleTimeMillis=3600000

但是没有效果。。。而且出现这个错误时,只需要换个浏览器,或者多刷新几次这个错误就没了。。不知道是什么原因,求大神解救··
------解决方案--------------------
原因确实是像你说的那样,因为太久没人访问,链接超时,服务器把链接关了,但是连接池不知道,还在用这个失效的链接
------解决方案--------------------
按理说改成这样的配置应该没问题了啊,你确定测试的时候用的是这个配置
------解决方案--------------------
把mysql,服务器重启一下就行了
------解决方案--------------------
引用:
把mysql,服务器重启一下就行了



生产环境要遇到问题能这么解决吗?要找到根本原因!
------解决方案--------------------
引用:
原因确实是像你说的那样,因为太久没人访问,链接超时,服务器把链接关了,但是连接池不知道,还在用这个失效的链接


确实如此!是你sql的服务器连接已经超时了,如果连接已经超时,那么你的连接池中连接都是无效的,然后你去调用的时候自然就报错了,然后你是不是在次连接的时候  就又可以使用了,就是每天都会报一次错误。

解决这个问题  只需要在my.ini配置中新增一个参数 wait_timeout=2147483    然后重启服务器就可以了
  相关解决方案