如果某个项目已经做了一段时间,而druid连接池一直没什么问题,直到现在,突然就抛出了下面的一长串异常:
2024-03-07 09:34:11.023 ERROR 42148 --- [nio-8080-exec-6] c.a.druid.pool.DruidAbstractDataSource : discard long time none received connection. , jdbcUrl : jdbc:mysql://localhost:3306/sky_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true, jdbcUrl : jdbc:mysql://localhost:3306/sky_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true, lastPacketReceivedIdleMillis : 439664
先别慌,GPT是这样解释的:
这是一个错误日志,看起来是Druid数据库连接池抛出的错误。日志中提到了连接池中的一个连接长时间没有接收到数据包。具体来说,它指出在数据库连接池中有一个连接长时间没有接收到数据包,连接地址为 `jdbc:mysql://localhost:3306/sky_take_out?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true`,最后一次接收到数据包的时间间隔为 439664 毫秒(约7分钟)。
这里有两种情况:
一是一开始使用就报错的,这个可以先看看别人那些修改性的文章,当然也可以先看完我这篇建议,然后点个赞再走。
另一种就是我要说的,使用了一段时间才出错。如果你先看到这篇文章,那就别急着改配置之类的,可以先看看你最近写的代码。
举个例子:
错误代码:
修改后:
可以看出,虽然两个代码都没有报错,但第一个就会报上面的那种错误。你取了数据,却没使用它,也不能怪它要抱怨了。
总的来说,就是写代码的时候要细心,要注意语法错误,更要了解一些可能会报逻辑错误的地方!