繁体   English   中英

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

[英]How to set a connection timeout on the MySQL JDBC driver?

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

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

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

我尝试将 ?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

在调用 getConnection 之前添加它。

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

在我的情况下工作。

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

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

有关更多帮助,请参阅MySqlConnection

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

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

查询验证:

SELECT @@max_execution_time

预期输出:

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

您可以更改 MySQL 配置文件中的默认值(mysqld 部分中的连接超时选项)-

[mysqld]
connect-timeout=100

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

SET GLOBAL connect_timeout=100;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM