Answers:
您可以将变量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;
现在您可以杀死该线程或等待完成该线程。
如果使用的MySQL版本低于5.0,则即使在会话或全局范围内也不能更改该变量。最好的解决方案是捕获查询并在流量缓慢后执行查询。