如何在MySQL JDBC驱动程序上设置连接超时?

时间:2014-01-25 13:12:19

标签: java mysql jdbc timeout connection-timeout

我看到JDBC MySQL驱动程序在10秒后始终无法连接尝试停止MySQL,但我想更改该超时。

我尝试将?connectTimeout = 2000& socketTimeout = 2000添加到连接URI,但这没有什么区别。

有没有办法自定义驱动程序在连接MySQL时返回超时所需的时间?

谢谢!

爱德华

5 个答案:

答案 0 :(得分:4)

  

我尝试将?connectTimeout = 2000& socketTimeout = 2000添加到连接URI,但这没有什么区别。

这正是它的配置方式,例如

jdbc:mysql://aaa.bbb.ccc.rds.amazonaws.com:1234/hello?connectTimeout=5000&socketTimeout=30000

请参阅https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

答案 1 :(得分:1)

您可以使用以下方法设置连接超时:

con.query('SET GLOBAL connect_timeout=2000')
con.query('SET GLOBAL wait_timeout=2000')
con.query('SET GLOBAL interactive_timeout=2000')

如需更多帮助,请参阅MySqlConnection

答案 2 :(得分:1)

在调用getConnection之前添加它。

...
DriverManager.setLoginTimeout(2);
DriverManager.getConnection(connectString);
...

以我的情况工作。

答案 3 :(得分:0)

如果 connectTimeoutsocketTimeout 都没有帮助您,您可以尝试在 URL 中将 MAX_EXECUTION_TIME 添加到 sessionVariables

jdbc:mysql://{host}:{port}/{database}?sessionVariables=MAX_EXECUTION_TIME=123456666

查询验证:

SELECT @@max_execution_time

预期输出:

+--------------------+ 
|@@max_execution_time| 
+--------------------+ 
| 123456666          | 
+--------------------+

答案 4 :(得分:-2)

您可以更改MySQL配置文件中的默认值(mysqld部分中的connect-timeout选项) -

[mysqld]
connect-timeout=100

如果您无法访问此文件,则可以使用此语句设置此值 -

SET GLOBAL connect_timeout=100;