日志消息全文:
日志消息:获取新用户时发生错误
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是在 44,567,434 毫秒前。最后一次成功发送到服务器的数据包是在 44,567,434 毫秒前。比服务器配置的“wait_timeout”值长。您应该考虑在应用程序中使用之前过期和/或测试连接有效性,增加客户端超时的服务器配置值,或使用 Connector/J 连接属性“autoReconnect=true”来避免此问题。
这对我来说很奇怪,因为这已经超过 10 个小时了。在过去的 10 个小时里,我的程序运行得很顺利,包括与数据库的通信。我最好的假设是池中的单个连接已过时,但在这种情况下,我不知道为什么它不会被自动清理,或者此异常是否与该操作相关。我该如何处理这个问题?
正在使用 c3p0 连接池。
最佳答案
c3p0 有很多方法来测试连接并防止它们超时或失效。解决您遇到的特定问题的最简单方法是将配置参数 maxIdleTime 设置为 8 小时(28800 秒)。
但您可能希望开始测试一般连接,例如,通过将idleConnectionTest 周期设置为频繁的值并将testConnectionOnCheckin 设置为true。参见...
http://www.mchange.com/projects/c3p0/#configuring_connection_testing
http://www.mchange.com/projects/c3p0/#configuration_properties
关于java - jdbc4.CommunicationsException - 神秘超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478368/