超出了锁定等待超时;尝试重新启动看起来永远不会停止的事务
不知道该怎么办才能停止此错误。为什么突然发生
#1 楼
您可以将变量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;
现在您可以杀死该线程或等待完成该线程。 br />
#2 楼
如果使用的MySQL版本低于5.0,则即使在会话或全局范围内也不能更改该变量。最好的解决方案是捕获查询并在流量缓慢后执行查询。评论
OP表示他们使用的是5.6,我认为该值为5.0或更高。
–RDFozz
18年1月26日在21:30
对于旧版系统而言,到现在总是很好,因为旧版系统很难找到doc / help
–timmz
20-09-20在15:29
评论
让我们继续聊天中的讨论。
– JAVAC
15年5月8日在20:20
感谢您提供此信息,但是当锁不断发生时,即使在具有较小更新(例如递增或更新单个字段)的非常简单的表上,如何才能找到问题的根源。
– Wouter
18-09-26在8:43