一尘不染

JDBC程序在运行时的MySQLNonTransientConnectionException

mysql

我在Java中有一个JDBC MySQL连接。我的程序可以很好地执行简单的查询。

如果我运行同一程序超过10个小时并执行查询,则会收到以下MySQL异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 
Connection.close() has already been called. Invalid operation in 
this state.
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(
  Native Method)
  com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
  No operations allowed after statement closed.
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(
  Native Method)

我没有close()在任何地方使用方法。我创建了数据库连接,并永远打开它并始终执行查询。我没有地方明确提到连接超时。我无法确定问题所在。

这是我用于数据库连接的代码:

 String driver = PropertyReader.getDriver();
 String url = dbURLPath;
 Class.forName(driver);
 connectToServerDB = DriverManager.getConnection(url);
 connectToServerDB.setAutoCommit(false);

是什么导致该异常?


阅读 510

收藏
2020-05-17

共1个答案

一尘不染

您必须在配置文件中进行更改或增加数据库的超时时间。如果数据库空闲超过8个小时,则默认情况下将其关闭。

谢谢

2020-05-17