【问题标题】:How to set a connection timeout on the MySQL JDBC driver?如何在 MySQL JDBC 驱动程序上设置连接超时?
【发布时间】:2014-02-16 12:41:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: java mysql jdbc timeout connection-timeout


    【解决方案1】:

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

    [mysqld]
    connect-timeout=100
    

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

    SET GLOBAL connect_timeout=100;
    

    【讨论】:

    • 我很困惑....这不是 mysql 守护程序设置。如果您希望设置为客户端怎么办。 IE。我的客户端可能没有来自守护程序服务器的设置,对吧?还是我弄错了?
    • 这是 MySQL 服务器上的设置。当客户端停止时,它不会对尝试连接到该服务器的客户端产生任何影响。
    【解决方案2】:

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

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

    如需更多帮助,请参阅MySqlConnection

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在调用 getConnection 之前添加它。

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

        在我的情况下工作。

        【讨论】:

          【解决方案5】:

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

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

          查询验证:

          SELECT @@max_execution_time
          

          预期输出:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-03
            • 2013-01-30
            • 2013-03-26
            • 1970-01-01
            • 2015-01-11
            • 2018-11-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多