Rom*_*man 48 java mysql spring jpa connection-timeout
我从错误消息中读到了这个建议:
您应该考虑在应用程序中使用之前过期和/或测试连接有效性,增加服务器配置的客户端超时值,或使用Connector/J连接属性"autoReconnect = true"来避免此问题.
我正在使用Spring和JPA.我应该在哪里配置Connector/J?(在弹簧配置中persistence.xml
,或在entityManagerFactory
弹簧配置中,或在dateSource
其他地方?)
ewe*_*nli 67
该文本描述了三种防止连接中止的解决方案:
使用配置连接字符串autoReconnect=true
.这是URL连接字符串的属性,它在驱动程序级别工作.您需要更改数据源配置中的连接字符串.
url="jdbc:mysql://localhost:3306/confluence?autoReconnect=true"
Run Code Online (Sandbox Code Playgroud)增加超时.这通常是数据库的属性.您可以增加此值以查看是否减少了连接中止.
配置连接池以测试连接有效性.这是在池中完成的,而不是驱动程序级别.这取决于您使用的数据源实现.但是,如果使用池化的,例如c3p0,它应该可以在数据源的属性中进行配置.
附加评论:
Gau*_*wal 18
AutoReconnect
不推荐.来自MySQL 这里
驾驶员是否应该尝试重新建立陈旧和/或死亡的连接?如果启用,驱动程序将为在旧连接或死连接上发出的查询抛出异常,这些查询属于当前事务,但会在新事务中在连接上发出下一个查询之前尝试重新连接.建议不要使用此功能,因为当应用程序无法正确处理SQLExceptions时,它会产生与会话状态和数据一致性相关的副作用,并且仅在您无法配置应用程序以处理由此产生的SQLExceptions时使用.死和陈旧的连接正确.或者,作为最后一个选项,研究将MySQL服务器变量"wait_timeout"设置为高值,而不是默认值为8小时.