MySQLサーバーが去ってしまったときのWebSocket 2006エラーの解決方法


  1. 接続タイムアウトの調整: MySQLサーバーとの接続が一定時間アイドル状態が続くと、接続が切断される場合があります。この場合、接続タイムアウトの設定を調整して、接続が切断されるまでの時間を延ばすことができます。例えば、以下のように接続タイムアウトを設定します。

    import mysql.connector
    config = {
       'user': 'username',
       'password': 'password',
       'host': 'localhost',
       'database': 'database_name',
       'connection_timeout': 1800  # 30 minutes
    }
    conn = mysql.connector.connect(config)

    上記の例では、接続タイムアウトを30分に設定しています。必要に応じてタイムアウト値を調整してください。

  2. プール接続の使用: WebSocket接続ごとにMySQLサーバーに接続する代わりに、接続プールを使用してMySQL接続の再利用を促進することもできます。これにより、接続の確立と切断のオーバーヘッドが軽減されます。以下は、Pythonのmysql-connector-pythonライブラリを使用して接続プールを作成する例です。

    import mysql.connector.pooling
    config = {
       'user': 'username',
       'password': 'password',
       'host': 'localhost',
       'database': 'database_name',
       'pool_name': 'my_pool',
       'pool_size': 5
    }
    pool = mysql.connector.pooling.MySQLConnectionPool(config)
    def get_connection():
       return pool.get_connection()
    # プールからコネクションを取得して使用する
    conn = get_connection()
    cursor = conn.cursor()
    # クエリの実行などを行う
    cursor.execute("SELECT * FROM table_name")
    result = cursor.fetchall()
    # コネクションを閉じる
    cursor.close()
    conn.close()

    上記の例では、プールサイズを5に設定していますが、必要に応じて適切な値に調整してください。

これらの方法を試してみて、MySQLサーバーが去ってしまったエラーを解決することができるはずです。ただし、環境や使用しているライブラリによって異なる場合があるため、適切な対策を選択してください。