我使用的是Play Framework2.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,或者在删除连接后自动重新连接?
发布于 2014-01-16 16:51:00
SORM的0.3.13-SNAPSHOT为Instance引入了一个timeout参数,默认设置为30。此设置确定允许基础连接空闲的秒数。当到达超时时,会向db发送某种“保持活动”请求,并重置计时器。在进行任何正常查询时,计时器也会被重置。该实现仅依赖于idleConnectionTestPeriod of C3P0。
如需进一步讨论,建议和报告请访问问题跟踪器上的相关票证或打开另一个。如果相关联的票中没有任何抱怨,此更改将使其进入0.3.13版本。
发布于 2014-01-16 08:54:45
使用c3p0很容易解决这个问题,但是我会再次检查您是否正在使用它。BoneCP是默认的play2连接池。用BoneCP也很容易解决这个问题!
在c3p0中,配置参数maxIdleTime、maxConnectionAge或(更好的)连接测试机制将有所帮助。请参阅测试
如果您想在c3p0中使用play2,请参阅https://github.com/swaldman/c3p0-play
https://stackoverflow.com/questions/21155307
复制相似问题