【问题标题】:How can I see / change MySQL connection timeout settings?如何查看/更改 MySQL 连接超时设置?
【发布时间】:2013-04-18 00:41:39
【问题描述】:

我有一个 Java 程序。当我登录时,大约 600,000 毫秒后(我实际上尝试了几次,它总是大约 600,000。这就是为什么我认为在某个地方设置了 600,000 毫秒的超时。)我的数据库连接崩溃并且我的程序不再工作(它总是需要连接到数据库)。它给了我Communication link failure 错误。我这里是我的 mysql 连接设置:

import java.sql.*;
import javax.swing.*;
public class mysqlconnect {
    Connection conn = null;
    public static Connection ConnectDb()    {
        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://server_name/database_name","user_name","user_password");
            return conn;
        }catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Cant connect to db");
            return null;
        }
    }
}

我尝试将?autoReconnect=truetcpKeepAlive 添加到我的代码中,但没有成功。有什么办法可以去 phpmyadmin 并在那里更改一些设置(增加超时时间)?

【问题讨论】:

    标签: java mysql


    【解决方案1】:
    SET SESSION wait_timeout = 999999;//or anything you want
    

    从 mysql 命令行会增加超时值。为了能够看到价值:

    SHOW VARIABLES LIKE 'wait_timeout';
    

    【讨论】:

    • 对不起,我不明白,我必须把它写在我的 db_config 文件或 phpmyadmin 的某个地方
    • 将这些代码保存在一个sql文件中并执行它或通过Java语句执行它或通过将其直接复制到mysql命令行或toad for mysql或mysql workbench来执行它。 How to use mysql command line
    • 它给了我这个错误 - #1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation,我认为我需要为此获得更好的访问权限
    【解决方案2】:

    您可以提出此请求以在 MySql 中显示您的超时

    SHOW VARIABLES LIKE 'connect_timeout';
    

    接下来您可以将其更新为 60 秒,例如

    SET GLOBAL connect_timeout=60;
    

    如果问题是查询,您可以使用Statement.setQueryTimeout

    【讨论】:

    • 谢谢,方法和你下面的帖子几乎一样,但既然那个人先发了,我就选择他作为答案
    【解决方案3】:

    您可以设置wait_timeoutNET_read_timeoutconnect_timeout,通过以下方式解决问题。

    SHOW VARIABLES LIKE 'wait_timeout'; SET SESSION wait_timeout = 999999;

    SHOW variables LIKE 'NET_read_timeout'; SET SESSION net_read_timeout = 1000;

    SHOW VARIABLES LIKE 'connect_timeout'; SET GLOBAL connect_timeout = 1000;

    【讨论】:

    • 你能不能也发表一个解释?
    【解决方案4】:

    我通常使用以下任何一种方式进行操作:

    1) 编辑 my.ini 文件。该文件通常位于 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

    [mysqld]
    interactive_timeout=2147483
    wait_timeout=2147483
    

    (Windows 的最大值为 2147483,其他操作系统的最大值为 31536000)

    之后,重启机器

    2) 在 JDBC url 中包含等待超时参数。这是从我的代码中获取的 JDBC URL

    jdbc:mysql://HOST:PORT/DATABASE_NAME?autoReconnect=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH',interactive_timeout=2147483,wait_timeout=2147483

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 2011-11-11
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多