數據庫鏈接超時是因爲數據庫長時間不鏈接以後斷開所致使的狀況,斷開以後首次就會給你拋個異常(com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure Last packet sent to the server was X ms ago)html
首先打開你的MySql控制檯,輸入密碼後進入java
接着敲入命令來悄一悄爲何會超時mysql
這裏咱們能夠看到wait_timeout爲28800,就是8小時。那麼就是說MySQL的服務會在操做間隔8小時後斷開,須要再次重連。當咱們用java程序的JDBC來鏈接時又可讓它自動恢復。
interactive_timeout:服務器關閉交互式鏈接前等待活動的秒數。交互式客戶端定義爲在mysql_real_connect()中使用CLIENT_INTERACTIVE選項的客戶端。又見wait_timeout
wait_timeout:服務器關閉非交互鏈接以前等待活動的秒數。在線程啓動時,根據全局wait_timeout值或全局interactive_timeout值初始化會話wait_timeout值,取決於客戶端類型(由mysql_real_connect()的鏈接選項CLIENT_INTERACTIVE定義),又見interactive_timeout
如此看來,兩個變量是共同控制的,那麼都必須對他們進行修改了。繼續深刻這兩個變量wait_timeout的取值範圍是1-2147483(Windows),1-31536000(linux),interactive_time取值隨wait_timeout變更,它們的默認值都是28800。
MySQL的系統變量由配置文件控制,當配置文件中不配置時,系統使用默認值,這個28800就是默認值。要修改就只能在配置文件裏修改。Windows下在%MySQL HOME%下有my.ini配置文件,打開後添加以下的一句話。(這裏修改成388000)linux
保存退出,重啓mysql服務,必定是重啓系統服務。即可看到修改結果:sql
Linux系統下的配置文件爲/etc/my.cnf。(同上操做)數據庫
本文同時發佈在:http://www.shuyangyang.com.cn/jishuliangongfang/shujuku/2013-03-10/63.html服務器