問題
mysql5數據庫連接超時問題:待機一晚上后,第二天早上第一次登錄總是失敗。
查看日志發現如下錯誤:
“com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago.”
問題原因
是由mysql5數據庫的配置引起的。mysql5將其連接的等待時間(wait_timeout)缺省為8小時。
客戶程序中可以這樣來查看其值:
命令:
#查看待機時長(28800 seconds,也就是8小時。) show global variables like 'wait_timeout';
總結
如果在wait_timeout秒期間內,數據庫連接(java.sql.Connection)一直處於等待狀態(不連接數據庫的狀態),mysql5就將該連接關閉。這時,你的Java應用的連接池仍然合法地持有該連接的引用。當用該連接來進行數據庫操作時,就碰到上述錯誤。這解釋了為什么我的程序第二天不能登錄的問題。
解決
wait_timeout的最大值分別是24天/365天(windows/linux)。
修改mysql5的配置文件“my.ini”(mysql5 installation dir)
#修改文件 vi /etc/my.cnf #添加一行 wait_timeout=1814400 #保存退出 wq!
測試顯示問題解決了。
文章轉載至:https://blog.csdn.net/qq_19590345/article/details/47261469