MySQL8小时自动断开连接

最近项目中使用连接池连接MySQL数据库, 过了8小时没人使用之后再使用就报错了
网上看了很多种解决方法, 但是没有满意答案
1. 修改mysql wait_timeout 配置
经理不让修改mysql配置. 据说最大也就修改为27天, 也是不大完美的方案.
2. jdbc url 添加authoReconnect=true.
无效 . 据说是mysql 5.0之前才支持
3. 设置maxIdleTime小于wait_timeout
使用Fabric, 其中设置maxIdle, 结果无效
4. 启动线程定时查询
每隔一段时间查询一次数据库, 这样做只会, 发现只有一个连接仍然可用,
连接池中的其他链接仍然不可用. 所以我猜想, 如果想通过这种方式完成,
就要遍历连接池中的所有连接, 不知如何实现.
综上, 应该如何解决这个问题?

4个回答

建议去查一下validationQuery和testOnBorrow两个配置属性,应该能解决你的问题。

validationQuery SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录
testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,
则从池中去除连接并尝试取出另一个.

是否有尝试每个连接都定期调用一下mysql_ping函数?

应该不是你说的原因。你每次都创建连接不可以么

只能自己开线程定期的往数据库查询一下。
都8个小时了,为什么还要保持这个连接,而不新建连接呢

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问