Ответ 1
SET SESSION wait_timeout = 999999;//or anything you want
Из командной строки mysql, которая увеличит значение таймаута. Чтобы увидеть значение:
SHOW VARIABLES LIKE 'wait_timeout';
У меня есть 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 и изменить некоторые настройки там (увеличить время ожидания)?
SET SESSION wait_timeout = 999999;//or anything you want
Из командной строки mysql, которая увеличит значение таймаута. Чтобы увидеть значение:
SHOW VARIABLES LIKE 'wait_timeout';
Вы можете сделать этот запрос, чтобы показать свой тайм-аут в MySql
SHOW VARIABLES LIKE 'connect_timeout';
Затем вы можете обновить его до 60 секунд для примера
SET GLOBAL connect_timeout=60;
Если проблема заключается в запросе, вы можете использовать Statement.setQueryTimeout
Вы можете установить 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;
Я обычно делаю это одним из следующих способов:
1) Отредактируйте файл my.ini. Этот файл обычно находится на C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
[mysqld]
interactive_timeout=2147483
wait_timeout=2147483
(максимальное значение 2147483 для Windows и 31536000 в других ОС)
После этого перезагрузите машину.
2) Включите параметр времени ожидания в URL JDBC. Здесь URL JDBC взят из моего кода
JDBC: MySQL://HOST: PORT/DATABASE_NAME autoReconnect = истина & амп; sessionVariables = sql_mode = 'STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION, PAD_CHAR_TO_FULL_LENGTH', interactive_timeout = 2147483,wait_timeout = 2147483