サーバーを再起動せずに MySQL テーブル ロックを解決する
「ロック待機タイムアウトを超えました。トランザクションを再起動してください」というエラーは、サーバーの再起動が必要であると誤解されることがよくあります。 ただし、このロックの問題は、明示的なトランザクションがなくても発生する可能性があります。根本原因を調査し、影響を受けるテーブルを解放するための解決策を提案しましょう。
このエラーは、ロックが MySQL UPDATE
ステートメントを妨げていることを示しています。 トランザクションを開始しなくても、MySQL は暗黙的なトランザクションまたはバックグラウンド プロセスによりロックを保持する可能性があります。
これを解決するには、直接的な (潜在的にリスクはありますが) 方法は、テーブルのロックを強制的に解除することです。
<code class="language-sql">mysql -u your_user -p</code>
<code class="language-sql">mysql> show open tables where in_use > 0;</code>
現在ロックされているテーブルが表示されます。
<code class="language-sql">mysql> show processlist;</code>
これはアクティブなプロセスを示します。ターゲットテーブルをロックしているプロセスを特定します。
<code class="language-sql">mysql> kill <process_id>;</code>
<process_id>
をロック プロセスの ID に置き換えます。
これによりテーブルのロックが強制的に解除され、UPDATE
ステートメントが有効になります。 重要なのは、この方法にはデータ破損のリスクがあり、アプリケーションの根本的な問題に対処する際の一時的な修正としてのみ使用する必要があります。
以上がサーバーを再起動せずにロックされた MySQL テーブルのロックを解除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。