最近項目中使用連接池連接MySQL數據庫, 過了8小時沒人使用之後再使用就報錯了
網上看了很多種解決方法, 但是沒有滿意答案
1. 修改mysql wait_timeout 配置
經理不讓修改mysql配置. 據說最大也就修改為27天, 也是不大完美的方案.
2. jdbc url 添加authoReconnect=true.
無效 . 據說是mysql 5.0之前才支持
3. 設置maxIdleTime小於wait_timeout
使用Fabric, 其中設置maxIdle, 結果無效
4. 啟動線程定時查詢
每隔一段時間查詢一次數據庫, 這樣做只會, 發現只有一個連接仍然可用,
連接池中的其他鏈接仍然不可用. 所以我猜想, 如果想通過這種方式完成,
就要遍歷連接池中的所有連接, 不知如何實現.
綜上, 應該如何解決這個問題?
建議去查一下validationQuery和testOnBorrow兩個配置屬性,應該能解決你的問題。
validationQuery SQL查詢,用來驗證從連接池取出的連接,在將連接返回給調用者之前.如果指定,
則查詢必須是一個SQL SELECT並且必須返回至少一行記錄
testOnBorrow true 指明是否在從池中取出連接前進行檢驗,如果檢驗失敗,
則從池中去除連接並嘗試取出另一個.