mysql 數(shù)據(jù)庫問題com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
最近個人搭建的工具Jira總是在訪問某一個頁面時報錯:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
Communications link failure
Last packet sent to the server was 0 ms ago
由于后臺用的數(shù)據(jù)庫是mysql,懷疑是mysql配置的問題
解決方式:
上述問題是由mysql5數(shù)據(jù)庫的配置引起的囤热。mysql5將其連接的等待時間(wait_timeout)缺省為8小時腰埂。
在其客戶程序中可以這樣來查看其值:
mysql﹥ show global variables like 'wait_timeout'
28800 seconds饺窿,也就是8小時。
如果在wait_timeout秒期間內(nèi)陋气,數(shù)據(jù)庫連接(java.sql.Connection)一直處于等待狀態(tài)棍潘,mysql5就將該連接關(guān)閉。這時洞慎,你的Java應用的連接池仍然合法地持有該連接的引用。當用該連接來進行數(shù)據(jù)庫操作時嘿棘,就碰到上述錯誤劲腿。
?本人覺得最簡單的辦法,就是對癥下藥:既然問題是由mysql5的全局變量wait_timeout的缺省值太小引起的鸟妙,我們將其改大就好了焦人。 查看mysql5的手冊挥吵,發(fā)現(xiàn)對wait_timeout的最大值分別是24天/365天(windows/linux)。
以Linux為 例花椭,假設(shè)我們要將其設(shè)為21天忽匈,我們只要修改mysql5的配置文件“my.cnf”(mysql5 installation dir),增加一行:
wait_timeout=1814400
?需要重新啟動mysql矿辽。
/etc/init.d/mysqld stop
/etc/init.d/mysqld start