sql >> データベース >  >> RDS >> Mysql

「MySQLサーバーがなくなったかどうかを確認する方法」

    OperationalError例外をキャッチして、再接続できます。

    from MySQLdb import OperationalError
    
    try:
        my_sql_operation()
    except OperationalError as e:
        #do what you want to do on the error
        reconnect()
        print e
    

    クエリを実行する前に接続が切断されているかどうかを明示的に確認する場合は、テストクエリを実行して、例外が発生するかどうかを確認できます。

    他にどのような場合にOperationalErrorが発生するのかわかりません。ただし、MySQL server has gone awayだけをキャッチしたい場合 エラー、あなたはこのようなことをすることができます。

    from MySQLdb import OperationalError
    
    try:
        my_sql_operation()
    except OperationalError as e:
        if 'MySQL server has gone away' in str(e):
            #do what you want to do on the error
            reconnect()
            print e
        else:
            raise e()
    

    'gone away'エラーのみをキャッチし、他の理由で発生したOperationalError例外を発生させます。

    更新

    コメントで言ったように、私のクエリ関数は次のようになります:

    def fetch_data(query):
        try:
            cursor = conn.Cursor()
            cursor.execute(query)
            return cursor.fetchall()
        except OperationalError as e:
            reconnect()
            print 'reconnecting and trying again...'
            fetch_data(query)
    

    これは単なる例であり、あなたの場合には適していない可能性があります。私が言いたいのは、これらの状況に簡単に対処できるように、さまざまなものにさまざまな機能を持たせる方がよいということです。



    1. 有効なデータディレクトリが見つかりませんでした。 MySQLジェネリックバイナリインストール

    2. アプリケーションレベルで読み取り専用DB接続を管理する方法

    3. 新しいコントローラーメソッドでform_forを使用しているときの未定義のメソッド

    4. MySQLが誤った文字列値エラーをスローする