gpt4 book ai didi

java - 由于底层异常导致 MySQL 通信链接失败

转载 作者:行者123 更新时间:2023-11-29 04:27:52 25 4
gpt4 key购买 nike


我正面临如此恼人的问题,
使用 TomcatJDBC Lib 在 Tomcat 6 和 MySQL 上运行。

com.mysql.jdbc.CommunicationsException: 

由于底层异常导致通信链接失败:

** BEGIN NESTED EXCEPTION ** 

java.io.EOFException

STACKTRACE:

java.io.EOFException
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1934)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2380)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3026)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231)

一段时间后(20 分钟)发生这种情况,所有与数据库的连接似乎都已过期。

autoReconnect=true" 
validationQuery="Select 1"

万事俱备。
我确实处理了重新连接到数据库的问题,它工作正常,但是巨大的日志文件很糟糕,我无法处理这个异常以使其保持沉默。这种类型的“修复”也不是正确的解决方案。有没有办法:
a) 默默地处理这个异常
b) 解决这个问题(我不知道有任何防火墙)(没有访问 my.cnf 的 mysql 配置)

在完全不同的应用程序上使用 Apache jConnector 的 Tomcat 5 上也有这个问题,没有任何可能断开连接的防火墙。

(在调用连接的方法上捕获 EOFException 或 CommunicationsException 当然没有帮助。)

提前致谢。

最佳答案

a) 停止 MySQL 数据库服务器和应用程序服务器(Tomcat 或其他)。

b) Mysql 设置:这应该在 mysql 文件夹下的“my.ini”文件中完成。

wait_timeout =1200(即 20 分钟 - 与您的防火墙或任何其他第三方软件保持相同的时间)

您可以通过上述查询设置它的数据库级别。设置 wait_timeout =1200;

通过上面的查询查看设置 Show variables like 'wait_timeout' ;

c) 在“Torque.properties”文件中添加两个属性。

minEvictableIdleTimeMillis 一个连接可以在池中保持空闲的时间(以毫秒为单位)

    torque.dsfactory.csa.pool.minEvictableIdleTimeMillis = 1100000

#timeBetweenEvictionRunsMillis 逐出线程运行之间的时间(以毫秒为单位);必须大于 0;默认为-1

  torque.dsfactory.csa.pool.timeBetweenEvictionRunsMillis = 2000


d) Start application and db server

关于java - 由于底层异常导致 MySQL 通信链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897287/

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