問題描述
把一個本地調試的項目連接配接部署到阿裡雲伺服器後,雲端和本地連接配接的是同一個資料庫,
資料庫報錯:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
.....
The last packet sent successfully to the server was 0 milliseconds ago......
同時有連接配接逾時的報錯,使用的是mybatis架構。
問題分析
- 網上很多解決辦法是:修改mysql預設8小時的連接配接逾時時間,但是不能解決,因為這個錯誤在項目剛啟動就報出,并沒有到8小時
- 通過指令curl <mysql host>:3306有傳回結果,說明資料庫可以被遠端正常通路
解決辦法
修改mybatis 配置檔案中:
//mybatis 對資料庫ping操作,解決8小時逾時問題
<property name="poolPingQuery" value="select now() from link limit 1"/>
改為
<property name="poolPingQuery" value="select 1"/>
可能是mybatis連接配接資料庫時,ping操作一直不通,導緻連接配接逾時,但是原來的配置在我本地windows上是可以的,到了雲端linux就不行了,