com.MySQL.jdbc.CommunicationsException: The last packet successfully received from the server was58129 seconds ago.The last packet sent successfully to the server was 58129 seconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
解决办法:
若是链接闲置8小时 (8小时内没有进行数据库操做), mysql就会自动断开链接, 要重启tomcat.
不用hibernate的话, connection url加参数: autoReconnect=true
用hibernate的话, 加以下属性:java
<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="connection.is-connection-validation-required">true</property>mysql
要是还用c3p0链接池:
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">0</property>
<property name="hibernate.c3p0.timeout">0</property>
<property name="hibernate.c3p0.validate">true</property>web
或者最王道的解决办法,那就是直接修改mysql的配置文件my.ini 在配置文件的最后增长wait_timeout=343232后面的数字是以秒计算。改个10年100年多方便的。sql
另外的解决办法:数据库
解决hibernate+mysql出现的隔天链接超时问题tomcat
出现错误:SQL Error: 0, SQLState: 08S01
Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
Java.NET.SocketException
MESSAGE: Software caused connection abort: socket write error
STACKTRACE:
java.Net.SocketException: Software caused connection abort: socket write error
** END NESTED EXCEPTION **
Last packet sent to the server was 0 ms agoapp
问题出现缘由
mysql默认为8小时后自动消除空闲链接,而hibernate默认空链接超时时间大于这个数。socket
解决方法
1.找到mysql5.0目录下的my.ini文件,在最底处(或任意位置)添加wait_timeout =60(60为自定义值)
2.用c3p0代替hibernate的链接池。c3p0.9.1.jar可从hibernate开源项目的lib下面找到,将其拷贝到web-inf/lib下面。在hibernate.cfg.xml配置文件中添加如下信息:
<property name="hibernate.c3p0.min_size">2</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>ide
其中hibernate.c3p0.timeout属性指定多少秒后链接超时,链接池会自动对超时链接进行重查。ui