Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform an...

本文介绍了当系统启动后一段时间未操作导致MySQL连接被自动关闭的问题,并提供了通过配置Proxool来解决该问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统启动,一段时间不操作,然后在来操作时,报错如下:

Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs).
at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:207)
at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
at $java.lang.AutoCloseable$$EnhancerByProxool$$48e70053.getAutoCommit(<generated>)
at org.hibernate.jdbc.ConnectionManager.isAutoCommit(ConnectionManager.java:212)
at org.hibernate.jdbc.JDBCContext.afterNontransactionalQuery(JDBCContext.java:266)
... 50 more

 

原因很简单:

mysql的数据库链接的生命周期有个时间限制,超过了时间mysql会关闭连接,这个关闭操作数据库连接池是不知道的,所以使用数据库链接时需要进行测试

修改Proxool相关配置即可:

<!--使用前先进行测试-->
<property name="testBeforeUse" value="true" />

<!--使用后执行关闭操作前先进行测试-->
<property name="testAfterUse" value="true" />

<!--用于保持连接的测试语句 -->

<property name="houseKeepingTestSql" value="select CURRENT_DATE" />

<!--日志统计跟踪类型-->
<property name="statisticsLogLevel" value="ERROR" />

<!--表示连接的最大活动时间, 如果到某个线程的活动时间大于这个数值,将会杀掉这个线程。默认是5分钟。-->
<property name="maximumActiveTime" value="${maximumActiveTime}" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值