最近项目中使用连接池连接MySQL数据库, 过了8小时没人使用之后再使用就报错了
网上看了很多种解决方法, 但是没有满意答案
1. 修改mysql wait_timeout 配置
经理不让修改mysql配置. 据说最大也就修改为27天, 也是不大完美的方案.
2. jdbc url 添加authoReconnect=true.
无效 . 据说是mysql 5.0之前才支持
3. 设置maxIdleTime小于wait_timeout
使用Fabric, 其中设置maxIdle, 结果无效
4. 启动线程定时查询
每隔一段时间查询一次数据库, 这样做只会, 发现只有一个连接仍然可用,
连接池中的其他链接仍然不可用. 所以我猜想, 如果想通过这种方式完成,
就要遍历连接池中的所有连接, 不知如何实现.
综上, 应该如何解决这个问题?
MySQL8小时自动断开连接
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- cluo_dev 2015-04-10 01:40关注
建议去查一下validationQuery和testOnBorrow两个配置属性,应该能解决你的问题。
validationQuery SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录
testOnBorrow true 指明是否在从池中取出连接前进行检验,如果检验失败,
则从池中去除连接并尝试取出另一个.本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报