2013-04-24 16 views
11

私は〜600,000ミリ秒後にログインしたときにJavaプログラムを持っています(実際に何回か試してみましたが、いつも〜600,000、thatsどこかで600,000ミリ秒のタイムアウトを設定していると思います)プログラムはもはや機能しません(常にデータベースに接続する必要があります)。それは私に​​エラーを与える。 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を追加しようとしたが、運:私はここに私のMySQLの接続設定されています。 phpmyadminに行って設定を変更する方法はありますか?(タイムアウト時間を長くする)

答えて

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

これは、タイムアウト値を増加させるmysqlコマンドラインからです。あなたはこの要求が

SHOW VARIABLES LIKE 'connect_timeout'; 

次あなたはexemple

SET GLOBAL connect_timeout=60; 

60 secondesにそれを更新することができますMySQLであなたのタイムアウトを表示することができます

SHOW VARIABLES LIKE 'wait_timeout'; 
+0

申し訳ありませんが、私は私のDB_CONFIGファイルでこれを書いたり、どこかにphpmyadminの – Edgar

+0

でSQLファイルにこれらのコードを保存し、それを実行するかを経由して、それを実行する必要がありますJavaステートメントを実行するか、mysqlまたはmysql workbenchのためにmysqlコマンドラインまたはtoadに直接コピーすることで実行します。 [mysqlコマンドラインの使い方](http://dev.mysql.com/doc/refman/5.0/en/windows-start-command-line.html) –

+0

これは私にこのエラーを与える - '#1227 - Access denied ;あなたはこの操作のためのSUPER特権を(少なくとも1つ)必要としています。私は病気がこれのためのより良いアクセス権を得る必要があると思います – Edgar

3

:値を参照できるようにするには問題が使用可能なクエリの場合Statement.setQueryTimeout

+0

ありがとう、あなたの下のポストとほぼ同じ方法ですが、最初に私は答えとして彼を選んだ – Edgar

1

wait_timeoutNET_read_timeoutconnect_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

関連する問題