Mysql8小时断线,请问如何解决?

ivan1114 发布于 2014/10/18 16:11
阅读 2K+
收藏 0

黄大侠:

      用你的Framework中,在实际生产环境中,发现有很多的

java.sql.SQLException: Could not retrieve transation read-only status server Query: insert into的错误日志,

具体是在Mysql 8小时后,就会出现此错误(主要是insert / update / delete事务会出现),请问如何这个错误?

谢谢。

生产环境:

Tomcat 7,MySQL5.6.21,Druid1.0.9

加载中
0
xiaoqqq
xiaoqqq

两种方式:

1、修改你的程序, 链接失效则重新获取

2、修改你的数据库参数, 有个timeout, 似乎是在my.conf里面, 默认是8小时,改大点

建议使用第一种方式, 第二种治标不治本。

xiaoqqq
xiaoqqq
回复 @ivan1114 : druid我不熟, c3p0里有配置, 可以每次使用连接前检查是否有效。
i
ivan1114
我用的是Druid连接池管理,不知有没有类连接检测是否失效的醒置。 第二种方法my.cnf,我修改了wait_timeout = 86400和interactive_timeout = 86400,但24小时后,还是会出现此错误,不能治本。
0
黄勇
黄勇

是不是在控制台出现了“java.sql.SQLException: Already closed.”的异常信息?这可能是因为连接池会自动关闭长时间没有使用的连接。

Druid 我不太熟,曾经用 DBCP 是这样解决的:

ds.setValidationQuery("select 1 from dual");

说明:以上 ds 代表 DataSource。

0
A
Alex_2011

试下将用过的连接Close掉,要用时再重新申请连接.


0
A
Alex_2011
请试下用下面这个方法将连接关闭 com.mysql.jdbc.Connection connMySql = (com.mysql.jdbc.Connection)conn;
connMySql.setDontTrackOpenResources(true);
0
行陌路
行陌路
直接用连接池,如: C3P0,可以解决
0
雲竹無心
雲竹無心
c3p0连接池,或者其他连接池!不想程序控制就修改MySQL 配置文件,wait_timeout设置为为31536000(一年)
返回顶部
顶部