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

テーブルを削除するとMySQLがハングします

    Waiting for table metadata lock
    drop table tableA name
    
    SELECT l1.lat, l1.lon, l2.zipcode FROM tableA l1, tableBl2 where l1.lat = l2.latitude and l1.lon = l2.longitude limit 10
    

    これがテーブルの場合は、このリンク を参照してください。

    暗黙のデッドロックがあります。他のトランザクションを強制終了してドロップを解放するか、ドロップを強制終了して他のトランザクションを解放します。

    キル を使用できます sql_plusのthread_id。

    別の興味深い経験を思いついたので、さらに情報を追加しています。

    Metadata デッドロックは、特定のテーブルでのddl操作間でも同様に発生する可能性があります(dropalter ...)および選択 そのテーブルでクエリを実行します。

    はい、select

    したがって、mysql(またはphp、たとえばpdo::fetchを使用)でカーソルをループすると、 )、同じテーブルでddlステートメントを実行すると、デッドロックが発生します。

    この非定型シナリオの1つの解決策は、commitを使用して暗黙的なロックを解放することです。 selectステートメントが完全にフェッチされた後のステートメント。



    1. 手動で可能なクエリ内のPL/SQLの不十分な権限

    2. Oracleのテーブル名の最大長はどれくらいですか?

    3. MySQL:計算列

    4. SQLServer比較演算子のリスト