我正在使用 Play Framework 2.2.1 , MySQL 5.5 和 sorm 0.3.10
由于MySQL在指定的空闲超时后丢弃非活动连接,因此我在我的应用程序中收到此异常:
[CommunicationsException: Communications link failure The last packet successfully received from the server was 162 701 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.]
据我了解,sorm正在使用c3p0连接池。是否有可能以某种方式配置c3p0或sorm以指定延迟启动mysql或在连接断开后自动重新连接?
答案 0 :(得分:2)
0.3.13-SNAPSHOT
为timeout
引入Instance
参数,默认设置为30
。此设置确定允许基础连接空闲的秒数。当达到超时时,会向db发送一种“keepalive”请求,并重置计时器。在进行任何正常查询时,计时器也会重置。实现只依赖于C3P0的idleConnectionTestPeriod
。
有关进一步的讨论,建议和报告,请访问the associated ticket on the issue tracker或打开另一个。如果the associated ticket中没有投诉,则此更改将进入0.3.13版本。
答案 1 :(得分:1)
使用c3p0很容易解决这个问题,但我会仔细检查你是否正在使用它。 BoneCP是默认的play2连接池。使用BoneCP也很容易解决这个问题!
在c3p0中,配置参数maxIdleTime,maxConnectionAge或(更好)连接测试机制会有所帮助。见http://www.mchange.com/projects/c3p0/#configuring_connection_testing
如果你想在play2中使用c3p0,请参阅https://github.com/swaldman/c3p0-play