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

MySQL innodbを解決する方法TRUNCATETABLEのテーブルメタデータロックを待機していますか?

    ここでの問題は十分に単純なようです。

    ---TRANSACTION 7490, ACTIVE 3047 sec
    MySQL thread id 189, OS thread handle 0x7f03be9fb700, query id 3840 10.0.2.1 root cleaning up
    Trx read view will not see trx with id >= 7491, sees < 7491
    ---
    

    スレッド189(クライアント接続)はアイドル状態で、しばらくの間使用されていましたが、トランザクションが実行されたままになっています。実行中のトランザクションをほぼ1時間そのままにしておくのは意味がないため、これはデータベースを使用しているコードのバグである可能性があります。

    mysql> KILL 189;
    

    これでメタデータロックが解放されるはずです...しかし、なぜこれが起こっているのかを知る必要があります。 BadThings™は、アプリケーションがこれよりも適切に動作しない場合に発生します。

    また...アプリケーションはrootとして接続しないでください 。問題とは関係ありませんが、それがそうだとすれば、良くありません。




    1. 行が存在するかどうかを確認し、存在しない場合は挿入します

    2. SQLでテーブルを削除する方法

    3. 基本クラスと派生オブジェクトのバリアント

    4. plpgsql関数の入力配列の要素に一致する行を返します