java - jdbc4.CommunicationsException - 神秘超时

标签 java mysql jdbc c3p0

日志消息全文:

日志消息:获取新用户时发生错误 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/

相关文章:

c# - 将值文本框插入mysql数据库

java - 为什么我无法从executeQuery obj 中按整数访问列数据?

java - 将数组传递给 SELECT * FROM 表 WHERE Country IN (?...)

java - 将字符串剪切到给定索引

java - getView 不返回 View 参数

从 Linux 64 位到 Windows 32 位的 MySql - 慢查询?

java - JDBC SQLServerException 参数未定义

Java String->unicode->字符串转换不一致

c# - 有人可以帮我介绍一些 JDBC 初学者吗?

php - 如何根据数据库中的 csv 重新填充/重新选择/自动选择多个选择框值?