我有一个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并在那里更改一些设置(增加超时时间)?
答案 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_timeout
和connect_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,等待时间