给领导写好的web网站发布后,第2天早上就出现无法查询到数据的情况。
在Tomcat的log里查到了JDBC begin transaction和Software caused connection abort: socket write error等问题。应该是和数据库连接的问题,但是程序并没有什么问题,应该是配置上的。()
通过搜索引擎查了好一会,有解决方案是对mysql设置autoReconnect。有以下2种方式
1.在连接数据库的url中添加即可。
<property name="url" value="jdbc:mysql://localhost:3306/zcgl?autoReconnect=true" />
2.hibernate中可以配置
<prop key="connection.autoReconnect">true</prop>
<prop key="connection.autoReconnectForPools">true</prop>
<prop key="connection.is-connection-validation-required">true</prop>
出现这种问题的原因是在使用mysql的时候,如果超过8小时数据库没有操作,会自动断开连接。
然而,实际情况依旧出现8小时断开连接问题,不清楚哪里出了问题。
最后用了第3种方法:https://blog.youkuaiyun.com/u012129031/article/details/72621288
由于我使用了Tomcat自带的连接池DBCP,在Spring中配置
<property name="testOnBorrow" value="true"></property>
<property name="validationQuery" value="select 1"></property>