异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法(一条龙全套解决办法)

1年前 (2023) 程序员胖胖胖虎阿
296 0 0

今天啊也是新参加了一个项目,这个数据库是远程连接的爆出这个错误的原因呢也很简单,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(数据库连接超时后配置解决)

相关文章

暂无评论

暂无评论...