「スタックした」MySQL テーブルのロック解除:「ロック待機タイムアウトを超過しました」のトラブルシューティング
「ロック待機タイムアウトを超過しました。再起動してみてください」というメッセージが発生した場合MySQL で InnoDB テーブルを操作中に「トランザクション」エラーが発生した場合は、トランザクションがスタックしている可能性があります。テーブルを修正し、スタックしたトランザクションを解決する方法は次のとおりです:
1.スタックしたトランザクションを特定します:
MySQL コマンド ライン インターフェイスまたは phpMyAdmin で次のコマンドを実行します:
SHOW PROCESSLIST;
これにより、実行中のトランザクションのリストが表示されます。スレッド。実行時間が長いスレッド、または「スリープ」状態にあるスレッドを探します。 「Id」欄に該当するスレッドIDが表示されます。
2.スタックしたスレッドを終了します:
スタックしたスレッドが特定されたら、コマンド ライン インターフェイスで次のコマンドを使用してスレッドを終了します:
KILL;
3.トランザクションを再起動します (オプション):
トランザクションがまだアクティブな場合は、トランザクションを再起動して、保持されているロックを解放します。これを行うには、次のコマンドを実行します。
START TRANSACTION; COMMIT;
4.インデックスの削除 (該当する場合):
以前に影響を受けるテーブルのインデックスを削除しようとして、ロックが原因で失敗した場合は、スタックしたスレッドを終了してトランザクションを再開した後、インデックスを再度削除してみてください。 .
ALTER TABLEDROP INDEX ;
これらの手順に従って、スタックしたテーブルのロックを解除し、「ロック」を解決できます。待機タイムアウトを超えました」というエラーが発生します。今後同様の問題を防ぐために、実行中のスレッドを定期的にチェックして、スタックしている可能性のあるトランザクションを特定して終了するようにしてください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3