我看到JDBC MySQL驱动在连接到已停止的MySQL后会连续失败10秒,但我想改变这个超时时间。我尝试将?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。
如果connectTimeout
和socketTimeout
都没有帮助,您可以尝试在URL中的sessionVariables
中添加MAX_EXECUTION_TIME
:
jdbc:mysql://{host}:{port}/{database}?sessionVariables=MAX_EXECUTION_TIME=123456666
验证的查询:
SELECT @@max_execution_time
期望输出:
+--------------------+
|@@max_execution_time|
+--------------------+
| 123456666 |
+--------------------+
...
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
您可以在MySQL配置文件中更改默认值(connect-timeout选项在mysqld部分)-
[mysqld]
connect-timeout=100
SET GLOBAL connect_timeout=100;