回答:
ロック時間の変数innodb_lock_wait_timeout = 100を100秒に設定できます。
mysql> set innodb_lock_wait_timeout=100;
Query OK, 0 rows affected (0.02 sec)
mysql> show variables like 'innodb_lock_wait_timeout';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 100 |
+--------------------------+-------+
タイムアウトしているトランザクションは、別のプロセスが保持しているテーブルをロックしようとします。タイムアウト変数は、わずかな秒数で設定されます。そのため、エラーが表示されます。コマンドでさらにステータスを見ることができます。
SHOW ENGINE INNODB STATUS\G
ロックされたテーブルのリストを表示するには、
show open tables where in_use>0;
このテーブルを使用しているスレッドを見てください
show full processlist;
これで、そのスレッドを強制終了するか、完了するまで待つことができます。
5.0より前のMySQLバージョンを使用している場合、セッションまたはグローバルスコープであっても変数を変更できません。最適なソリューションは、クエリをキャプチャし、トラフィックが遅くなった後に実行することです。