更新查询超出了Mysql锁等待超时

时间:2015-07-23 13:57:14

标签: mysql timeout lock-timeout

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

但是有时会在使用一些常用表的1次更新时抛出锁定等待超时错误。

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

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

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

我是新手,请帮忙。

P.S。 Mysql - 5.6 128 GB RAM。 使用具有持久连接池的hibernate。

1 个答案:

答案 0 :(得分:1)

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

[mysqld]
innodb_lock_wait_timeout=10000

 SET GLOBAL innodb_lock_wait_timeout = 10000;

您还可以将触发会话添加到触发器下方进行临时超时:

SET innodb_lock_wait_timeout = 10000;