初步使用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 版本相匹配。