MySQL テーブルでの「ロック待機タイムアウトを超過しました」エラーのトラブルシューティング
データベース操作の試行時に「ロック待機タイムアウトを超過しました」エラーが発生した場合は、次のことを示している可能性があります。ターゲットテーブルでスタックしたトランザクション。この問題は、WHERE 句の欠落などの不完全なクエリが原因で発生することが多く、複数の行を誤って更新したり、同じ列を繰り返し更新したりする可能性があります。
トランザクションが暗黙的に開始される InnoDB テーブルでこの問題を解決するには、次のようにします。次の手順を使用できます:
実行中のチェックスレッド:
まず、SHOW PROCESSLIST を使用して実行中のスレッドを調べます。指示。これにより、ID と実行時間を含むスレッドのリストが表示されます。
スタックしたスレッドを特定します:
停止したスレッドを探します。異常に長時間実行されているか、「ロック」状態になっています。これらのスレッドがスタック トランザクションの原因である可能性があります。
スタック スレッドを強制終了します:
問題のあるスレッドが特定されたら、スレッドを終了できます。 KILL コマンドの後に ID を指定します。例:
KILL 115;
このコマンドを実行すると、スタックしたスレッドに関連付けられた接続が終了し、保持されていたロックが効果的に解放されます。
スタックしたスレッドを強制終了した後、テーブルは再び動作可能になるはずです。単純なクエリは正常に実行され、インデックスの削除などのインデックス操作操作は成功するはずです。
以上がMySQL テーブルでの「ロック待機タイムアウトを超過しました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。