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

MySQL:ロック待機タイムアウトを超えました

    私はエリックに同意します。 TRUNCATETABLEがその方法です。ただし、何らかの理由でそれを使用できない場合(たとえば、実際に使用しない場合) テーブル内のすべての行を削除したい場合)、次のオプションを試すことができます:

    • 行を小さなバッチで削除します(例:DELETE FROM bundle_inclusions WHERE id BETWEEN?と?)
    • MyISAMテーブルの場合(実際には、これはInnoDBでも機能する可能性があります)、DELETEの前にLOCKTABLEを発行してみてください。これにより、排他的アクセスが保証されます。
    • InnoDBテーブルの場合は、 タイムアウトが発生した場合は、SHOWINNODBSTATUSを使用してください。これにより、ロックの取得が失敗した理由についての洞察が得られるはずです。
    • SUPER権限をお持ちの場合は、SHOW PROCESSLIST ALLを試して、テーブルを使用している他の接続(存在する場合)を確認してから、KILLを使用して競合している接続を取り除くことができます。

    他にもたくさんの可能性があると思います。これらのいずれかがお役に立てば幸いです。



    1. ガレラクラスターリソース

    2. SQL Server:文字列データのPIVOTingの例

    3. MySQLのサブ文字列間のテキストの抽出

    4. JSON_STORAGE_FREE()–MySQLでJSONドキュメントを更新した後に解放されたストレージスペースの量を確認する