我看到JDBC MySQL驱动程序在10秒后始终无法连接尝试停止MySQL,但我想更改该超时。
我尝试将?connectTimeout = 2000& socketTimeout = 2000添加到连接URI,但这没有什么区别。
有没有办法自定义驱动程序在连接MySQL时返回超时所需的时间?
谢谢!
爱德华
答案 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)
如果 connectTimeout
或 socketTimeout
都没有帮助您,您可以尝试在 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;