我们正在运行 java 应用程序,运行了很长时间,后端是 db 是 MySQL,最近更新到 mysql 5.6。一切都运行良好,上周开始出现此错误 Lock wait timeout exceeded ;尝试重新启动看起来永远不会停止结束的事务不知道如何处理此错误以停止。为什么会突然发生
小智 39
您可以将变量 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 |
+--------------------------+-------+
Run Code Online (Sandbox Code Playgroud)
超时的事务,尝试锁定另一个进程持有的表。并且您的超时变量设置的秒数很少。所以它显示错误。您可以通过命令查看更多状态。
SHOW ENGINE INNODB STATUS\G
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式查看锁定表的列表-
show open tables where in_use>0;
Run Code Online (Sandbox Code Playgroud)
现在查看正在使用该表的线程
show full processlist;
Run Code Online (Sandbox Code Playgroud)
现在您可以终止该线程或等待完成它。
| 归档时间: |
|
| 查看次数: |
168623 次 |
| 最近记录: |