2

在生产服务器的数据库中,调度程序每天运行一个程序,在该程序中我很少有删除插入和更新语句。

但它有时会在使用某些常用表的 1 次更新时抛出 lock wait timeout exceeded 错误。

最初 innodb_lock_wait_timeout 是 50 秒,后来我把它改成了 100,所以问题解决了一段时间,但后来又出现错误,所以我把它改成 120,再次临时解决。现在我已经为全局设置了 150 秒,并在会话中设置了 200(在过程中)。几天后它工作正常。

但是这个过程非常重要,得到错误会产生问题,因为它有非常重要的数据。

那么有没有其他解决方案可以永久解决这个问题?

我是新手请帮忙。

PS Mysql - 5.6 128 GB 内存。使用具有持久连接池的休眠。

4

1 回答 1

2

在 my.cnf 中执行以下操作并重新启动 mysql

[mysqld]
innodb_lock_wait_timeout=10000

或者

 SET GLOBAL innodb_lock_wait_timeout = 10000;

您还可以将触发会话设置为临时超时,将以下内容添加到您的触发器中:

SET innodb_lock_wait_timeout = 10000; 
于 2015-07-23T19:31:19.967 回答