天天看点

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