次の 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>;