解決數據庫連接池連接mysql時,每隔8小時mysql自動斷開所有連接的問題
最近有個問題非常討厭,我們的工程中使用自己的連接池連接mysql數據庫,可mysql數據庫每隔8小時就會自動斷開所有鏈接,連接池就失效,需要重新啟動tomcat才有效,呵呵,服務器可不能老是用“人工智能”來干預啊,后來翻了一下mysql的手冊,發現mysql有解決辦法,下面就是最簡單的解決辦法:
連接數據庫的時候加上autoReconnect=true這個參數:
jdbc:mysql://localhost:3306/accounant?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
但是,在mysql手冊中有這樣一段話:
| 驅動程序是否應嘗試再次建立失效的和/或死連接? 如果允許,對於在失效或死連接上發出的查詢(屬於當前事務),驅動程序將拋出異常,但在新事務的連接上發出下一個查詢時,將嘗試再連接。不推薦使用該特性,這是因為,當應用程序不能恰當處理SQLExceptions時,它會造成與會話狀態和數據一致性有關的副作用,設計它的目的僅用於下述情況,即,當你無法配置應用程序來恰當處理因死連接和/或無效連接導致的SQLExceptions時。作為可選方式,可將MySQL服務器變量“wait_timeout”設置為較高的值,而不是默認的8小時。 |
呵呵,不知道這種“副作用”會產生什么后果,難道會使tomcat崩潰??會產生“數據一致性”問題??
保險一點的辦法還是增加“wait_timeout”這個值吧,把28800設置成更大的值,這樣應該就不會有什么問題了吧。
windows下在my.ini文中增加:
interactive_timeout=28800000
wait_timeout=28800000
注:目前我使用的是autoReconnect這種方式,未發現什么問題。
轉自:http://blog.csdn.net/liuxiaogangqq/article/details/41757501
