问题
MySQL数据库里,在经过8小时(默认时间)不访问数据库后,其连接会被MySQL关闭,然而c3p0连接池里依旧保留着这个被关闭的连接。所以在8小时后,突然有操作访问数据库时,会报错提示连接无效。
解决
c3p0配置
spring.xml部分代码
<!-- 配置数据源,记得去掉myBatis-mapper.xml的数据源相关配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 解决一段时间后mysql关闭连接 -->
<property name="maxIdleTime">
<value>28000</value>
</property>
<property name="idleConnectionTestPeriod">
<value>28000</value>
</property>
</bean>