天天看點

記錄Mysql JDBC連接配接失敗Communications link failure失敗

問題描述

把一個本地調試的項目連接配接部署到阿裡雲伺服器後,雲端和本地連接配接的是同一個資料庫,

資料庫報錯:

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就不行了,