今天项目mysql数据库报错:No operations allowed after connection closed
今天项目报错: No operations allowed after connection closed错误原因:MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错解决方案1.修改项目配置文件 ...
·
今天项目报错: No operations allowed after connection closed
错误原因:MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错
解决方案
1.修改项目配置文件 原有的配置:online.applicationContext.xml
<bean id="db" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://"/>
<property name="username" value=""/>
<property name="password" value=""/>
<property name="defaultCatalog" value="toy"/>
<property name="connectionProperties" value="[useUnicode=false;character_set_client=utf8mb4]"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="50"/>
<property name="maxIdle" value="50"/>
<property name="minIdle" value="10"/>
<property name="maxWait" value="5000"/>
<!-- 设置自动回收超时连接 -->
<property name="removeAbandoned" value="true"/>
<!-- 自动回收超时时间(以秒数为单位) -->
<property name="removeAbandonedTimeout" value="10"/>
<!-- 设置在自动回收超时连接的时候打印连接的超时错误 -->
<property name="logAbandoned" value="true"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="db" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="db" />
</bean>
<aop:aspectj-autoproxy />
修改之后
<bean id="db" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://"/>
<property name="username" value=""/>
<property name="password" value=""/>
<property name="defaultCatalog" value=""/>
<property name="connectionProperties" value="[useUnicode=false;character_set_client=utf8mb4]"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="50"/>
<property name="maxIdle" value="50"/>
<property name="minIdle" value="10"/>
<property name="maxWait" value="5000"/>
<!-- 设置自动回收超时连接 -->
<property name="removeAbandoned" value="true"/>
<!-- 自动回收超时时间(以秒数为单位) -->
<property name="removeAbandonedTimeout" value="10"/>
<!-- 设置在自动回收超时连接的时候打印连接的超时错误 -->
<property name="logAbandoned" value="true"/>
<property name= "timeBetweenEvictionRunsMillis" value="30000" />
<property name= "numTestsPerEvictionRun" value="30" />
<property name="minEvictableIdleTimeMillis" value="1800000" />
方案二
首先执行sql语句:
SHOW VARIABLES LIKE
"%timeout%"
结果
在文件中设置修改
wait_timeout=31536000
interactive_timeout=31536000
重启数据库
更多推荐
已为社区贡献1条内容
所有评论(0)