问题描述
把一个本地调试的项目连接部署到阿里云服务器后,云端和本地连接的是同一个数据库,
数据库报错:
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就不行了,