在生产服务器的数据库中,一个过程每天由调度程序运行,在该过程中我几乎没有删除插入和更新语句。
但是有时会在使用一些常用表的1次更新时抛出锁定等待超时错误。
最初innodb_lock_wait_timeout是50秒,然后我把它改为100,所以问题已经解决了一段时间,但后来再次发生错误,所以我把它改为120,再次它被临时解决了。现在我为全局设置了150秒,在会话中设置了200秒(在程序中)。这几天工作正常。
但是这个过程非常重要,因为它有非常重要的数据,所以错误会产生问题。
那么还有其他解决方案可以永久解决这个问题吗?
我是新手,请帮忙。
P.S。 Mysql - 5.6 128 GB RAM。 使用具有持久连接池的hibernate。
答案 0 :(得分:1)
在my.cnf中执行以下操作并重新启动mysql
[mysqld]
innodb_lock_wait_timeout=10000
或
SET GLOBAL innodb_lock_wait_timeout = 10000;
您还可以将触发会话添加到触发器下方进行临时超时:
SET innodb_lock_wait_timeout = 10000;