MySQL:No operations allowed after connection closed错误原因及解决

错误

页面出现500,查看控制台错误出现No operations allowed after connection closed。

原因

出现No operations allowed after connection closed。错误
,说明mysql的链接已经关闭了。访问一个关闭了的链接当然会出现异常了。
之所以会出现这个异常,是因为MySQL5.0以后针对超长时间DB连接做了一个处理,那就是如果一个DB连接在无任何操作情况下过了8个小时后(Mysql 服务器默认的“wait_timeout”是8小时),Mysql会自动把这个连接关闭。这就是问题的所在,在连接池中的connections如果空闲超过8小时,mysql将其断开,而连接池自己并不知道该connection已经失效,如果这时有 Client请求connection,连接池将该失效的Connection提供给Client,将会造成上面的异常。
所以配置datasource时需要配置相应的连接池参数,定是去检查连接的有效性,定时清理无效的连接。

解决方法

在配置文件yml的数据源配置中添加如下连接池配置:

initialSize: 5
minIdle: 10
maxActive: 1000
#配置获取连接等待超时的时间
maxWait: 60000
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
#配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
#指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
testWhileIdle: true
#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
testOnBorrow: true
#指明是否在归还到池中前进行检验
testOnReturn: false

补充:spring boot默认会优先使用的连接池是tomcat连接池,前提是在tomcat连接池可用的情况下

参考资料1

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]和\[2\]中提到的异常"jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed."是由于连接关闭后仍然执行了数据库操作引起的。引用\[3\]中解释了这个异常的原因,即MySQL默认空闲8小时没有操作会自动断开连接。在C3P0连接池中,如果连接空闲超过8小时,MySQL会断开连接,但C3P0并不知道该连接已经失效。当有客户端请求连接时,C3P0会提供这个失效的连接,从而导致上述异常的出现。 解决这个问题的方法是在Spring Boot的application.properties文件中增加DBCP配置。DBCP是Apache Commons DBCP连接池的一种实现,可以用来管理数据库连接。通过配置DBCP的相关参数,可以避免连接空闲超过8小时被MySQL断开的问题,从而解决上述异常。 请注意,具体的DBCP配置参数可能因使用的数据库和连接池的版本而有所不同。你可以根据自己的需求和环境进行相应的配置。 #### 引用[.reference_title] - *1* *3* [解决MySQLNonTransientConnectionException的问题](https://blog.csdn.net/wwwzhouzy/article/details/118710071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于java.sql.SQLNonTransientConnectionException: No operations allowed after connection closed.的解决方案](https://blog.csdn.net/weixin_62338217/article/details/127405066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值