gpt4 book ai didi

java - 运行时 JDBC 程序中的 MySQLNonTransientConnectionException

转载 作者:IT老高 更新时间:2023-10-29 00:18:53 26 4
gpt4 key购买 nike

我有一个 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);

是什么导致了这个异常?

最佳答案

MySQL 在 8 小时超时后终止连接。您可以通过设置 wait_timeout 来修改超时。 MySQL 中的变量。

然而,一般来说,应用程序保持连接这么长时间并不是一个好主意。更好的方法是使用池化 API 设置连接池,例如 Apache DBCP。并从池中检索连接,而不是直接通过驱动程序。如果连接池由于某种原因(包括超时)而终止,连接池还将负责重新建立池连接。

关于java - 运行时 JDBC 程序中的 MySQLNonTransientConnectionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com