当前位置: 首页 > 面试题库 >

为什么autoReconnect = true似乎不起作用?

东明德
2023-03-14
问题内容

我正在使用JDBC连接到MySQL服务器(我认为没有连接池)。在连接网址中,我有autoReconnect=true

但是我的连接仍然超时。我什至检查了conn.isClosed()它的错误。但是,当我尝试使用连接时,出现以下异常。

com.mysql.jdbc.CommunicationsException:由于基础异常导致通信链接失败:

**开始嵌套例外**

java.net.SocketException
消息:软件导致连接中止:套接字写入错误

堆栈跟踪:

java.net.SocketException:软件导致连接中止:套接字写入错误
...

我知道在Java 1.6中可以使用它conn.isValid(0)来检查连接,但是我正在使用Java 1.5

有没有办法确保它不会超时?还是我必须升级到Java 1.6?


问题答案:

我有同样的问题,这绝对令人发疯。这是文档在MySQL网站上的内容(重点是我的)

驾驶员是否应该尝试重新建立陈旧和/或无效连接?
如果启用,驱动程序将为在旧连接或无效连接上发出的查询抛出异常,该查询属于当前事务,但将尝试在新事务中对连接发出的下一个查询之前重新连接
。不建议使用此功能,因为当应用程序无法正确处理SQLExceptions时,它具有与会话状态和数据一致性相关的副作用,并且仅当无法配置应用程序处理死机导致的SQLExceptions时才使用此功能。和陈旧的连接正确。或者,研究将MySQL服务器变量“
wait_timeout”设置为较高的值,而不是将默认值设置为8小时。


以我的经验,“下一个查询重新连接”功能似乎也不起作用,但是我使用的是MySQL 4.0,这可能就是这样做的原因。

我最终编写了一个微型框架,该框架捕获异常,检查该特定错误,并尝试重新连接并在可能的情况下重试该查询。

ETA
:此链接提供了更多信息,并表示将来无论如何都可能会删除autoReconnect。



 类似资料:
  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL:

  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使

  • 问题内容: 如果您在Python 3.7中执行以下语句,它将(根据我的测试)打印: 但是,计算结果为。 当然,计算结果为,并计算结果为。 我最初是在测试函数的返回值时发现此问题的,但是在第二种情况下却未返回任何内容-因此,该函数返回了。 这里发生了什么? 问题答案: 这是一个很好的例子,说明为什么不应该直接使用这些方法,因为它们通常不是等效操作符的适当替代;您应该使用运算符来代替相等性比较,或者在

  • 根据我所发现和看到的一切,这似乎是正确的。打印$query时,结果如下所示: “在客户(名字、名字、姓氏、地址、城市、州、邮政编码、电子邮件、性别)中插入值(?,,,,,,,,,,?,,,?)” 参数应该已经用bindValues()中的变量填充。所以,举个例子。。。 插入到客户(第一名、中间名、最后名、地址、城市、州、邮编、电子邮件、性别)值(比尔、霍普金斯、123大街、...) 我想继续使用这

  • 我是Java新手,正在努力学习。我目前陷入困境,不知道为什么无法从文件夹导入。