我有一个使用MySql保存到表中的应用程序(此表有2个JSON字段,其中一个可以接收大量输入)。我不时地在制作中遇到以下错误:
SqlExceptionHelper - 从服务器成功收到的最后一个数据包是71,290,382毫秒。
成功发送到服务器的最后一个数据包是71,290,384毫秒。比服务器长 配置值为' wait_timeout'。您应该考虑到期和/或测试连接有效性 在应用程序中使用之前,增加服务器配置的客户端超时值或使用Connector / J 连接属性' autoReconnect = true'避免这个问题。
我不明白为什么会发生这种情况,因为我从未遇到过这个问题。这是我目前的配置:
cfg.setProperty("hibernate.c3p0.min_size", "5")
.setProperty("hibernate.c3p0.max_size", "20")
.setProperty("hibernate.c3p0.timeout", "30000")
.setProperty("hibernate.c3p0.max_statements", "50")
.setProperty("hibernate.c3p0.idle_test_period", "3000")
.setProperty("hibernate.connection.autoReconnect", "true")
.setProperty("hibernate.connection.autoReconnectForPools", "true");
我错过了什么吗?。
答案 0 :(得分:1)
我们有一段时间有同样的问题。我在历史中搜索,虽然您可以保留您拥有的值,但您需要添加以下值:<property name="connection.is-connection-validation-required">true</property>
。这对我们的工件起了作用,但是你需要检查你的情况,因为你可能有其他设置。
作为旁注,我认为应该是:
.setProperty("connection.autoReconnect", "true")
.setProperty("connection.autoReconnectForPools", "true");
我们还有c3p0.properties
个文件:
c3p0.preferredTestQuery=select 1 from dual
c3p0.maxConnectionAge=3600
c3p0.testConnectionOnCheckin=false
c3p0.testConnectionOnCheckout=true
c3p0.acquireRetryDelay=1500
c3p0.acquireRetryAttempts=15
c3p0.breakAfterAcquireFailure=false
c3p0.idleConnectionTestPeriod=200