2011-10-25 7 views
2

をWAIT_TIMEOUT。は、私は現在、MySQLを含むJavaプログラムで働いていたセッション変数

通信リンク障害:私は問題これらのメッセージとに遭遇しました。サーバから最後に受信したパケットは で、前には174,165,153ミリ秒でした。サーバーに最後に送信されたパケット は4ミリ秒前です。

これは、セッション変数 'wait_timeout'と関係があります。私の仮定は間違っている可能性があるので、私はここでそれを確認しています。これは本当に 'wait_timeout'セッション変数のためですか?このエラーは、セッションタイムアウトが既に終了しているという意味でデータベース接続が「期限切れ」になっていることを意味しますか?はい、私は別の問題がある場合..私は言ったエラーを再現することはできません。..

これは私がエラーを複製するためにしようとしていますものです。

  1. 元々28800(8時間)である5からwait_timeout変数を設定します。 executeSimpleQuery()機能だけで接続があるかどうかを確認するために、単純なSELECT * FROM文を実行

    Class.forName("com.mysql.jdbc.Driver"); 
        oConnection = DriverManager.getConnection(sUrl,sUser,sPass); 
        System.out.println("Database Connection Established.\n"); 
        Thread.sleep(6000); 
    
        executeSimpleQuery(); 
    

    :これを適用するデータベースにアクセスするための私の次の試みが、私はこのコードを実行します

    mysql> set session wait_timeout=5;

  2. 思考まだ働いています。どうやら、wait_timeoutがちょうど5で、私がスレッドを6秒間スリープさせたならば、接続は今や期限切れになり、エラーが生成されるはずです。しかし、クエリを実行する代わりに、期待される結果は発生しません。

エラーを複製するにはどうすればよいですか?

答えて

2

は、現在のセッションのためにWAIT_TIMEOUT = 5に設定します。 (javaアプリケーションで)別のセッションを開き、クエリを実行しました。この変数をオープン接続後に設定するか、グローバルに設定してください。例えば

-

SET @@global.wait_timeout = 15; -- Set global variable 
SET @@local.wait_timeout = 25; -- Set session variable 
SELECT @@global.wait_timeout, @@local.wait_timeout; -- Check global and session variables 
+0

はこのためにどうもありがとうございました。セッションごとに接続を処理する必要があるため、私はwait_timeoutのグローバル設定を使用しませんでした。再度、感謝します – Oneb

関連する問題