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

9
我看到JDBC MySQL驱动在连接到已停止的MySQL后会连续失败10秒,但我想改变这个超时时间。我尝试将?connectTimeout=2000&socketTimeout=2000添加到连接URI中,但没有任何效果。有没有办法自定义驱动程序连接到MySQL时返回超时的时间?
5个回答

16

6

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

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

验证的查询:

SELECT @@max_execution_time

期望输出:

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

4
在调用getConnection之前添加此代码。
...
DriverManager.setLoginTimeout(2);
DriverManager.getConnection(connectString);
...

在我的情况下有效。


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

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

需要更多帮助,请参见MySqlConnection


-5

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

[mysqld]
connect-timeout=100

如果您无法访问此文件,则可以使用以下语句设置此值 -
SET GLOBAL connect_timeout=100;

我有点困惑...这不是一个mysql守护进程的设置吗?如果你想要在客户端设置该项,怎么办呢?也就是说,我的客户端可能没有来自守护进程服务器的设置,对吗?还是我理解错了? - Dean Hiller
这是MySQL服务器的设置。当服务器停止时,它不会对试图连接到该服务器的客户端产生任何影响。 - Adrian Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接