异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法(一条龙全套解决办法)
今天啊也是新参加了一个项目,这个数据库是远程连接的爆出这个错误的原因呢也很简单,mysql数据库远程连接中断设定的默认查询执行失败。
第一个场景
分析原因:检查自己本地数据库连接看看连接的上不。很明显是成功的。那么为什么数据库不行呢。
开始动手:检查配置:检查在xml中对mysql配置的jdbc。也没有什么问题。
检查驱动:发现idea上的mysql驱动的版本太低了,将版本修改成了8.0.11(pom文件):(最终也不是这个问题)
解决结果:最后是检查了一下wif,发现wif用的是自己的,导致和远程数据库对应不上所以爆了这个问题。
第二个场景
断电了一次重启mysql
分析原因:明明第一次连接上了为啥第二次就连接不上了呢
开始动手:因为断了一次电,远程数据库和我们之间的联系断开了,我们重启mysql
检查端口:重启后还是不行,发现重启mysql后他的端口号不会自动开启,然后我们就手动开启了他的3306端口号
第三个场景
检查缓冲值测试连接是否还可以使用
可以通过配置,让缓冲池去测试连接是否被回收,如果被回收,则不继续使用,以jdbc
为例:
#SQL查询,用来验证从连接池取出的连接
jdbc.validationQuery=SELECT 1 FROM ${platSchema}.xxxxxx
#指明连接是否被空闲连接回收器(如果有)进行检验,如果检测失败,则连接将被从池中去除
jdbc.testWhileIdle=true
#在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位,一般比minEvictableIdleTimeMillis小
jdbc.timeBetweenEvictionRunsMillis=300000
#在每次空闲连接回收器线程(如果有)运行时检查的连接数量,最好和maxActive一致
jdbc.maxActive= 50
jdbc.numTestsPerEvictionRun=50
#连接池中连接,在时间段内一直空闲,被逐出连接池的时间(10006060),以毫秒为单位
jdbc.minEvictableIdleTimeMillis=3600000
第四个场景
db2连接出现问题
检查db链接地址,如果db无法连接,那么会出现这个错误,
问题描述为当前数据包发送成功,但是得不到db的响应
检查下db2是否可以连接成功,若是db2连接不成功那么db2在idea中一样不会成功。
不可以使用mysql去连接db2的数据库一样会爆出这个问题
第五个场景
若是以上都与你无关那么恭喜你(无厘头解决办法)关机重启(某些电脑就会解决这个问题:解释不了
)
具体可以参考这篇:https://blog.csdn.net/JustinQin/article/details/78630100(数据库连接超时后配置解决)
更多推荐
所有评论(0)