关于MySQL超出wait_timeout断开连接的问题
2016-02-18 16:48
465 查看
环境:Hibernate4.2+Mysql5.0
原因:mysql默认对所有连接的有效时间为28800秒,正好8小时,也就是说,8小时内,这个连接没有请求和响应,mysql将自动断开该连接,但是,此时Hibernate的连接池并不知道这个连接已经被断开,如果,此时,有线程需要使用这个连接的时候,就会报StackTrace:org.hibernate.exception.JDBCConnectionException:
Could not open connection。
解决方案:
1.重启tomcat。
2.增大MySQL的连接有效时间
2.1 直接修改mysql的my.ini文件,wait_timeout最大为31536000即1年,在my.ini中加入:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
2.2 创建连接时,通过在getSession方法中执行session.createSQLQuery("set global wait_timeout=60").executeUpdate();可以灵活设置连接有效时间,且解决代码部署后需配置mysql的问题。
3.网上查到的在jdbc的connection url后加入参数: autoReconnect=true 或者在hibernate的配置文件hbm.cfg.xml加入
<property name=”connection.autoReconnect”>true</property>
<property name=”connection.autoReconnectForPools”>true</property>
<property name=”connection.is-connection-validation-required”>true</property>
4.不用Hibernate默认的连接池,使用C3P0连接池
最后使用4解决问题。配置C3P0所需jar包链接:http://pan.baidu.com/s/1o6WSsHW
参考的其他文章:http://blog.csdn.net/nethibernate/article/details/6658855
http://blog.csdn.net/lanmo555/article/details/37659341 http://www.2cto.com/database/201209/158448.html http://blog.csdn.net/a79412906/article/details/8971534
原因:mysql默认对所有连接的有效时间为28800秒,正好8小时,也就是说,8小时内,这个连接没有请求和响应,mysql将自动断开该连接,但是,此时Hibernate的连接池并不知道这个连接已经被断开,如果,此时,有线程需要使用这个连接的时候,就会报StackTrace:org.hibernate.exception.JDBCConnectionException:
Could not open connection。
解决方案:
1.重启tomcat。
2.增大MySQL的连接有效时间
2.1 直接修改mysql的my.ini文件,wait_timeout最大为31536000即1年,在my.ini中加入:
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
2.2 创建连接时,通过在getSession方法中执行session.createSQLQuery("set global wait_timeout=60").executeUpdate();可以灵活设置连接有效时间,且解决代码部署后需配置mysql的问题。
3.网上查到的在jdbc的connection url后加入参数: autoReconnect=true 或者在hibernate的配置文件hbm.cfg.xml加入
<property name=”connection.autoReconnect”>true</property>
<property name=”connection.autoReconnectForPools”>true</property>
<property name=”connection.is-connection-validation-required”>true</property>
4.不用Hibernate默认的连接池,使用C3P0连接池
最后使用4解决问题。配置C3P0所需jar包链接:http://pan.baidu.com/s/1o6WSsHW
参考的其他文章:http://blog.csdn.net/nethibernate/article/details/6658855
http://blog.csdn.net/lanmo555/article/details/37659341 http://www.2cto.com/database/201209/158448.html http://blog.csdn.net/a79412906/article/details/8971534
相关文章推荐
- 字符集与MySQL中文乱码问题(1)
- mysql常用
- 如何启动/停止/重启MySQL
- MySQL插入数据时乱码问题
- mysql开启日志模式的方法
- mysql 1129 error
- mysql 中定时任务event的创建
- MySQL性能优化的最佳20+条经验
- mysql 索引的建立
- MySQL与unix时间问题
- mysql数据库
- MySQL INNER JOIN
- Mysql数据类型浅析
- Mysql 主从复制配置
- MySql海量数据批量插入优化小结
- 浅析 MySQL (find_in_set )
- mysql5.5慢日志设置和查询
- mysql新建表和修改字段例子
- MySQL数据库的优化
- mysql取出表中,某字段值最大的一条纪录,sql语句