2013-04-24 3 views
11

У меня есть java-программа, когда я вхожу в систему, после ~ 600 000 миллисекунд (я на самом деле несколько раз пытался, и ее всегда ~ 600 000, вот почему я думаю, что у меня где-то установлен тайм-аут на 600 000 милисекундов), сбой в моей базе данных и мой программа больше не работает (ее всегда нужно подключать к базе данных). Это дает мне ошибку Communication link failure. Я вот мои настройки Подключение к MySQL:Как я могу увидеть/изменить настройки таймаута подключения к 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 и изменить некоторые настройки там (увеличить время ожидания)?

ответ

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

Из командной строки mysql, которая увеличит значение таймаута. Для того, чтобы быть в состоянии увидеть значение:

SHOW VARIABLES LIKE 'wait_timeout'; 
+0

К сожалению я не понимаю, я должен написать это в моем файле DB_CONFIG или где-то в PHPMyAdmin – Edgar

+0

сохранить эти коды в файл SQL и выполнить его или выполнить его с помощью Java или выполнить его, скопировав его непосредственно в командную строку mysql или toad для mysql или mysql workbench. [Как использовать mysql command line] (http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html) –

+0

это дает мне эту ошибку - '# 1227 - Доступ запрещен ; вам нужна (по крайней мере одна из) привилегия SUPER для этой операции', я думаю, что вам нужно получить лучшие права доступа для этого – Edgar

3

Вы можете сделать этот запрос, чтобы показать свой тайм-аут в MySql

SHOW VARIABLES LIKE 'connect_timeout'; 

Далее вы можете обновить его до 60 secondes для Exemple

SET GLOBAL connect_timeout=60; 

Если возникнут проблемы с Запросом, вы можете использовать Statement.setQueryTimeout

+0

Спасибо, это почти тот же метод, что и сообщение ниже вас, но так как этот парень отправил сначала я выбрал его как ответ – Edgar

1

Вы можете установить wait_timeoutNET_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;

+2

Не могли бы вы также опубликовать объяснение? – Robert

Смежные вопросы