gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:01:25 25 4
gpt4 key购买 nike

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

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

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.SocketExceptionMESSAGE: Software caused connection abort: socket write errorSTACKTRACE:java.net.SocketException: Software caused connection abort: socket write error...

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

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

最佳答案

我遇到了同样的问题,这绝对令人抓狂。这是 MySQL 网站上的文档所说的(重点是我的)

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

根据我的经验,“在下一个查询时重新连接”功能似乎也不起作用,但我使用的是 MySQL 4.0,这可能是造成这种情况的原因。

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

预计到达时间:This link提供了更多信息,并表明将来可能会删除自动重新连接。

关于java - 为什么 autoReconnect=true 似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667289/

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