MySQL連接超時自動斷開連接問題 描述: 用mybatis2.3.5實現做應用時,程序中報以下錯誤: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 79,221,885 milliseconds ago. The last packet sent successfully to the server was 79,221,885 milliseconds ago. 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小時 (mysql的wait_timeout參數默認時間), mysql就會自動斷開連接, 得刷新應用才行. 不用hibernate的話, connection url加參數:
autoReconnect=true用hibernate的話, 加如下屬性:
<property name="connection.autoReconnect">true</property> <property name="connection.autoReconnectForPools">true</property> <property name="connection.is-connection-validation-required">true</property>
要是還用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>
例:
jdbc.url=jdbc:mysql://localhost:3306/yht_wxt?zeroDateTimeBehavior=convertToNull&useUnicode=True&characterEncoding=utf8&autoReconnect=true&autoReconnectForPools=true