MySQLNonTransientConnectionException: No operations allowed after connection closed 解决方法

初步使用Eclipse 的 data source explorer 窗口的时候,工程量不大、且偷懒时会直接使用 table 右键的 edit 功能。
有时会报错:

com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connect

查看细节:

虽然针对mysql数据库 ping succeed! 但是由details 可知,该database 的 connection 已经关闭。

所以初学者/简单操作(只针对简单程序的测试)的解决方式有:

1. 重新连接 数据库 (不要Refresh),Disconnect 然后再 Connect。

2. 如果 1 不行,请尝试将你写的JDBC 数据库连接代码 中的 .close()注释掉。

-----------------------------------------------------------------------------------------------------------------------

以上问题可能跟,eclipse 与 mysql 连接太久以致于超时自动关闭所致。

针对这个问题可以有针对性的进行设置,找到了这篇文章的方法:

  ① 增加wait_timeout的时间。

  ②  减少Connection pools中connection的lifetime。

  ③ 测试Connection pools中connection的有效性。

· 具体解决方案:
  1、换一下JDBC驱动,JDBC3.1.0-alpha及以前版本会出现此问题,下载新的JDBC驱动

  2、使用hibernate配置:

使用hibernate:

<property name=”connection.autoReconnect”>true</property>  <!–这个是最主要的–>

<property name=”connection.autoReconnectForPools”>true</property>

<property name=”connection.is-connection-validation-required”>true</property>

加入以上property,可解决此问题,如果未使用hibernate等持久化管理框架,可在mysql的url中加入autoReconnect=true,这样就可以解决。

参考这篇文章:https://www.cqmaple.com/201308/no-operations-allowed-after-connection-closed.html

个人建议,mysql版本一定尽量要与 JDBC 版本相匹配。

猜你喜欢

转载自blog.csdn.net/qq_19246031/article/details/82943864