2013-04-24 14 views
11

Mam program java, po zalogowaniu się, po ~ 600 000 milisekund (w rzeczywistości wypróbowałem kilka razy, a zawsze ~ 600 000, dlatego wydaje mi się, że gdzieś ustawiono limit czasu na 600 000 milisekund), moje połączenie z bazą danych zawiesza się, a mój program już nie działa (zawsze musi być podłączony do bazy danych). Daje mi to błąd Communication link failure. I Oto moje ustawienia mysql gra:Jak mogę zobaczyć/zmienić ustawienia limitu czasu połączenia 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; 
     } 
    } 
} 

Próbowałem, dodając ?autoReconnect=true & tcpKeepAlive do mojego kodu, ale bez powodzenia. Czy jest jakiś sposób, aby przejść do phpmyadmin i zmienić niektóre ustawienia (zwiększyć czas oczekiwania)?

Odpowiedz

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

Z wiersza poleceń mysql, który zwiększy wartość limitu czasu. Aby móc zobaczyć wartość:

SHOW VARIABLES LIKE 'wait_timeout'; 
+0

Niestety ja nie rozumiem, muszę napisać to w moim pliku db_config lub gdzieś w phpmyadmin – Edgar

+0

zapisać te kody w pliku sql i wykonać go lub wykonać go za pomocą Instrukcja Java lub wykonaj ją poprzez skopiowanie jej bezpośrednio do wiersza poleceń mysql lub toad dla mysql lub mysql workbench. [Jak korzystać z wiersza poleceń mysql] (http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html) –

+0

daje mi ten błąd - '# 1227 - Odmowa dostępu ; potrzebujesz (przynajmniej jeden) uprawnienia SUPER dla tej operacji ", myślę, że źle trzeba uzyskać lepsze uprawnienia dostępu do tego – Edgar

3

Można zrobić to żądanie, aby pokazać swój limit czasu w MySQL

SHOW VARIABLES LIKE 'connect_timeout'; 

Następnie można go zaktualizować do 60 secondes dla exemple

SET GLOBAL connect_timeout=60; 

Jeśli problem polega na kwerendie, możesz użyć Statement.setQueryTimeout

+0

Dzięki, prawie taka sama metoda jak post pod tobą, ale ponieważ ten facet wysłany Najpierw wybrałem go jako odpowiedź – Edgar

1

Możesz ustawić NET_read_timeout i connect_timeout w celu rozwiązania problemu w następujący sposób.

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

Czy mógłbyś również zamieścić wyjaśnienie? – Robert

Powiązane problemy