MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。

解决这个问题的办法有三种:

1. 增加 MySQL 的 wait_timeout 属性的值。

修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置:

# Set a connection to wait 8 hours in idle status.

wait_timeout = 86400

2. 减少连接池内连接的生存周期,使之小于上一项中所设置的 wait_timeout 的值。

修改 c3p0 的配置文件,设置:

# How long to keep unused connections around(in seconds)

# Note: MySQL times out idle connections after 8 hours(28,800 seconds)

# so ensure this value is below MySQL idle timeout

cpool.maxIdleTime=25200

在 Spring 的配置文件中:

3. 定期使用连接池内的连接,使得它们不会因为闲置超时而被 MySQL 断开。

修改 c3p0 的配置文件,设置:

# Prevent MySQL raise exception after a long idle time

cpool.preferredTestQuery='SELECT 1'

cpool.idleConnectionTestPeriod=18000cpool.testConnectionOnCheckout=true

修改 Spring 的配置文件:

附:以下 awk 脚本可以用以将 c3p0.properties 文件中的属性设置转换成为 applicationContext.xml 中 数据库连接池 DataSource 所需的 XML 元素形式。

QUOTE:

#!/bin/awk

BEGIN {

FS="="}

{

if (NF == 2) {

if ((x=index($1, ".")) > 0) {

property_name = substr($1, x+1, length($1)); } else {

property_name = $1 }

printf(" ", property_name, $1); }

}

mysql超时失效c3p0_解决c3p0和MySQL集成情况下,连接长时间闲置后重新使用时报错的问题...相关推荐

  1. 解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效.在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话, ...

  2. android apt最新版本,解决Android studio 2.3升级到Android studio 3.0 后apt报错问题

    解决Android studio 2.3升级到Android studio 3.0 后apt报错问题 发布时间:2020-09-16 19:59:42 来源:脚本之家 阅读:62 作者:哈特中尉 1. ...

  3. mysql MDL锁如何解决_理解MySQL的MDL元数据锁

    一.MDL锁的作用 MySQL DBA 对于 Waiting for table metadata lock 肯定不会陌生,一般都是进行 alter 操作时被堵住了,导致了我们在 show proce ...

  4. 不能连接MySQL服务主机3306_解决centos的mysql服务3306端口无法远程连接10038问题

    之前一期说过在centos下安装宝塔控制面板,当登陆进去新建了数据库,然后在windows使用navicat for mysql 远程连接数据库一直失败,没有解决就先用阿里的RDS先用着,直到近期找到 ...

  5. python mysql写入速度加快_解决python写入mysql中datetime类型遇到的问题

    解决python写入mysql中datetime类型遇到的问题 发布时间:2020-08-31 16:46:47 来源:脚本之家 阅读:89 作者:WilliamDescant 刚开始使用python ...

  6. 阿里mysql连接_[转]解决阿里云mysql不能连接,配置mysql远程连接

    默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h local ...

  7. mysql 开发 生产_在没有表锁定的情况下在巨大的MySQL生产表...

    [2017]更新:MySQL 5.6支持在线索引更新 In MySQL 5.6 and higher, the table remains available for read and write o ...

  8. shiro如何保证session不失效_请问在不加锁的情况下如何保证线程安全?

    概念 compare and swap,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数--内存位置(V).预期原值(A)和新值(B).如果内存位置的值与预期原值相匹配,那么 ...

  9. mysql 超时问题的解决办法

     问题: com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server w ...

最新文章

  1. mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句
  2. 车企纷抢无人驾驶赛道,中国智能汽车确定将立法
  3. Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
  4. 【2006-4】【木偶玩具】
  5. bat遍历当前目录下的文件,批量重命名
  6. ubuntu 将 python 设定为python3, pip设定为pip3
  7. python能做哪些单机游戏好玩_【单机游戏】可以快速用Python进行数据分析的几个小技巧_玩得好游戏攻略...
  8. python的高级函数_Python的高级函数
  9. 编译我的hello.ko
  10. Django REST Framework API Guide 07
  11. Updating Homebrew... ...长时间卡住的问题
  12. 系统出错, 发生系统错误 1067, 进程意外终止. 解决方法
  13. Ubuntu 18.04安装Apollo 6.0:从零开始到启动Demo(超多细节)
  14. 2019 GDUT 新生专题I选集 L题(CodeForces - 1260B)
  15. 今天开始学Java 如果统计的个数相同,则按照ASII码由小到大排序输出 。
  16. linux下安装python3报错_Linux中安装python3
  17. 输入一个字符串,将其逆序输出。
  18. 全球最大成人网站公布年度榜单!原来lsp最爱看的是这种片……
  19. 我是没有口袋的哆啦a梦
  20. 什么灯适合学生在暑假使用?照度国AA级的舒适护眼灯

热门文章

  1. PHP - 获取音频长度
  2. Java多线程学习(二)---线程创建方式
  3. Javascript:字符串分割split()妙用
  4. vCenter Server Appliance 5.5忘记root密码
  5. IRP_MJ_CREATE
  6. “百度杯”CTF比赛 十月场 Hash 复现
  7. 关于web.xml的格式
  8. 架构师速成7.6-高中书单资料推荐
  9. Apache ab压力测试工具
  10. python中if __name__ == '__main__': 的解析