如何查看/更改MySQL连接超时设置?

时间:2013-04-24 12:46:39

标签: java mysql

我有一个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=true& tcpKeepAlive我的代码,但没有运气。有没有办法去phpmyadmin并在那里更改一些设置(增加超时时间)?

4 个答案:

答案 0 :(得分:24)

SET SESSION wait_timeout = 999999;//or anything you want

从mysql命令行那将增加超时值。能够看到价值:

SHOW VARIABLES LIKE 'wait_timeout';

答案 1 :(得分:3)

您可以将此请求设置为在MySql中显示超时

SHOW VARIABLES LIKE 'connect_timeout';

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

SET GLOBAL connect_timeout=60;

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

答案 2 :(得分:2)

您可以设置wait_timeout NET_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;

答案 3 :(得分:0)

我通常使用以下任一方法来做到这一点:

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,等待时间