2013-04-24 29 views
11

Tôi có một chương trình java, khi tôi đăng nhập, sau ~ 600.000 mili giây (tôi thực sự đã thử nhiều lần, và luôn luôn ~ 600.000, đó là lý do tại sao tôi nghĩ rằng có một nơi nào đó thiết lập thời gian chờ 600.000 mili giây) chương trình không còn hoạt động (nó luôn luôn cần phải được kết nối với cơ sở dữ liệu). Nó cho tôi lỗi Communication link failure. Tôi Dưới đây là các thiết lập của tôi mysql kết nối:Làm cách nào tôi có thể xem/thay đổi cài đặt thời gian chờ kết nối 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; 
     } 
    } 
} 

Tôi đã thử thêm ?autoReconnect=true & tcpKeepAlive để mã của tôi, nhưng không có may mắn. Có cách nào để đi đến phpmyadmin và thay đổi một số thiết lập ở đó (tăng thời gian chờ)?

Trả lời

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

Từ dòng lệnh mysql sẽ làm tăng giá trị thời gian chờ. Để có thể nhìn thấy giá trị:

SHOW VARIABLES LIKE 'wait_timeout'; 
+0

Xin lỗi tôi không hiểu, tôi phải viết những dòng này trong tập tin db_config của tôi hay nơi nào đó trong phpmyadmin – Edgar

+0

cứu những mã trong một file sql và thực hiện nó hoặc thực hiện nó thông qua Java tuyên bố hoặc thực hiện nó thông qua sao chép nó trực tiếp vào dòng lệnh mysql hoặc cóc cho mysql hoặc mysql workbench. [Làm thế nào để sử dụng dòng lệnh mysql] (http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html) –

+0

nó cho tôi lỗi này - '# 1227 - Truy cập bị từ chối ; bạn cần (ít nhất một trong số) đặc quyền SUPER cho hoạt động này', tôi nghĩ bệnh cần có quyền truy cập tốt hơn cho số này – Edgar

3

Bạn có thể thực hiện yêu cầu này để hiển thị thời gian chờ của bạn trong MySql

SHOW VARIABLES LIKE 'connect_timeout'; 

Tiếp theo, bạn có thể cập nhật nó đến 60 secondes cho exemple

SET GLOBAL connect_timeout=60; 

Nếu vấn đề là Truy vấn, bạn có thể sử dụng Statement.setQueryTimeout

+0

Cảm ơn, phương thức gần giống như bài đăng bên dưới bạn, nhưng kể từ khi anh ấy đăng đầu tiên tôi chọn anh ta làm câu trả lời – Edgar

1

Bạn có thể đặt wait_timeoutNET_read_timeoutconnect_timeout để giải quyết sự cố theo cách sau.

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

Bạn cũng có thể đăng một lời giải thích? – Robert

Các vấn đề liên quan