用jdbc连接mysql数据库,执行程序一段时间后控制台报连接超时。why,如何解决!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用jdbc连接mysql数据库,执行程序一段时间后控制台报连接超时。why,如何解决!相关的知识,希望对你有一定的参考价值。

java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection timed out: connect

** BEGIN NESTED EXCEPTION **

参考技术A 是没有连接上吧,检查下数据库配置,按程序中的参数是否可以连接上数据库追问

连接上了,已经有部分数据插入到数据库了,但是后来就连接超时抛异常。

追答

用完了记得关闭。
先关闭prepareStatement对象,再关闭Connection对象

追问

用一次关一次,用一次开一次。这样循环着,数据插入也是循环的
pstmt.close();
conn.close();

一段时间后回收 JDBC 连接

【中文标题】一段时间后回收 JDBC 连接【英文标题】:Recycling JDBC connections after some time 【发布时间】:2012-03-01 14:47:55 【问题描述】:

我有一个使用 Oracle RAC 数据库的应用程序。为了在数据库节点上执行维护任务,我想将所有连接从数据库节点 1 迁移出去,然后关闭节点进行维护。

我想要确保数据库连接不会保持打开超过 X 分钟。当一个 DB 节点进行维护时,在该节点上打开的连接将在最多 X 分钟后关闭,并在另一个节点上重新创建。

使用的连接池是common-dbcp,打算移到tomcat-jdbc。对于这两个池,我看不到强制回收连接一段时间后的配置选项。我错过了什么吗?或者这不是标准选项?

【问题讨论】:

我不认为这是一个选择。您可以在借用时使用测试,但它很昂贵。也许您可以添加一个选项来销毁整个池并重新创建它并在您关闭系统进行维护时调用它 借用测试无济于事,因为节点上已打开的连接仍然有效。销毁整个池会破坏当前打开的连接,这是我试图避免的。 我认为你可以很好地销毁它,以便不在池中的连接在返回后被销毁 【参考方案1】:

查看tomcat-jdbc documentation,我看到有一个 maxAge 参数几乎可以满足我的需要。我将在下周进行一些检查以确认并将更新此答案以反映我的发现。

【讨论】:

结果如何? :)

以上是关于用jdbc连接mysql数据库,执行程序一段时间后控制台报连接超时。why,如何解决!的主要内容,如果未能解决你的问题,请参考以下文章

php连接mysql使用一段时间后连接数据库超时

JDBC 连接:超时后未重新连接

如何将java程序里的一段连接mysql的语句转为连接sqlserver语句。连接的是sqlser

Android:用 JDBC 连接 MySql

JDBC数据库

jdbc 中管理丢失连接的标准方法是啥?