为什么会出现com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常?
- 内容介绍
- 文章标签
- 相关推荐
本文共计341个文字,预计阅读时间需要2分钟。
分析,出现这种异常的原因是:MySQL服务器的默认wait_timeout参数是8小时,也就是说一个connection如果空闲超过8小时,MySQL将自动断开该connection。这就是问题所在,在连接时。
分析,出现这种异常的原因是:
MySQL服务器默认的“wait_timeout”是8小时,也就是说一个connection空间超过8个小时,mysql将自动断开该connection,这就是问题所在,在连接池中的connection如果空闲超过8小时,mysql将其断开,连接池并不知道该connection已失效,如果这时有client请求connection,连接池将失效的connection提供给client,将会造成上面的异常。
解决的方法:
(1)增加wait_timeout的时间。
(2)测试连接池中的connection的有效性。
可以使用hibernate等持久化管理框架,如使用配置:
<property name=”connection.autoReconnect”>true</property> <!–这个是最主要的–> <property name=”connection.autoReconnectForPools”>true</property> <property name=”connection.is-connection-validation-required”>true</property
也可以在Mysql的url中加入autoReconnect=true。
在data source 配置时加入下面三行也可以解决问题:
<property name=”connection.autoReconnect”>true</property> <!–这个是最主要的–> <property name=”connection.autoReconnectForPools”>true</property> <property name=”connection.is-connection-validation-required”>true</property
本文共计341个文字,预计阅读时间需要2分钟。
分析,出现这种异常的原因是:MySQL服务器的默认wait_timeout参数是8小时,也就是说一个connection如果空闲超过8小时,MySQL将自动断开该connection。这就是问题所在,在连接时。
分析,出现这种异常的原因是:
MySQL服务器默认的“wait_timeout”是8小时,也就是说一个connection空间超过8个小时,mysql将自动断开该connection,这就是问题所在,在连接池中的connection如果空闲超过8小时,mysql将其断开,连接池并不知道该connection已失效,如果这时有client请求connection,连接池将失效的connection提供给client,将会造成上面的异常。
解决的方法:
(1)增加wait_timeout的时间。
(2)测试连接池中的connection的有效性。
可以使用hibernate等持久化管理框架,如使用配置:
<property name=”connection.autoReconnect”>true</property> <!–这个是最主要的–> <property name=”connection.autoReconnectForPools”>true</property> <property name=”connection.is-connection-validation-required”>true</property
也可以在Mysql的url中加入autoReconnect=true。
在data source 配置时加入下面三行也可以解决问题:
<property name=”connection.autoReconnect”>true</property> <!–这个是最主要的–> <property name=”connection.autoReconnectForPools”>true</property> <property name=”connection.is-connection-validation-required”>true</property

