トランザクションを使用していないのに「ロック待機タイムアウトを超えました。トランザクションを再起動してください」というメッセージが表示される 質問する

トランザクションを使用していないのに「ロック待機タイムアウトを超えました。トランザクションを再起動してください」というメッセージが表示される 質問する

次の MySQLUPDATEステートメントを実行しています:

mysql> update customer set account_import_id = 1;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

トランザクションを使用していないのに、なぜこのエラーが発生するのでしょうか? MySQL サーバーを再起動しても効果はありませんでした。

テーブルには 406,733 行あります。

ベストアンサー1

MySQL でロックされたテーブルを強制的にロック解除する方法:

このようなロックを解除すると、原子性ロックの原因となった SQL ステートメントにはデータベースで強制されません。

これはハッキング的な行為であり、適切な解決策はロックの原因となったアプリケーションを修正することです。ただし、金銭が絡んでいる場合は、素早い対応で物事が再び動き出すでしょう。

1) MySQLを入力する

mysql -u your_user -p

2) ロックされたテーブルのリストを見てみましょう

mysql> show open tables where in_use>0;

3) 現在のプロセスのリストを見てみましょう。そのうちの1つがテーブルをロックしています。

mysql> show processlist;

4) これらのプロセスの1つを強制終了します

mysql> kill <put_process_id_here>;

おすすめ記事