解決資料庫連線池連線mysql時,每隔8小時mysql自動斷開所有連線的問題

Main-zy發表於2017-03-15

解決資料庫連線池連線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這種方式,未發現什麼問題。

相關文章