我正在使用 MySQL 数据库并尝试在插入后更新记录,因此出现以下错误ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction
。
所以我通过以下查询减少超时:-
set GLOBAL innodb_lock_wait_timeout=1
所以我的问题是:-
可以这样做吗?是否会导致性能问题等其他问题?
感谢您的帮助。
如果这是一个 Web 应用程序,并且您试图将事务从一个页面挂到下一个页面,don't;这是行不通的。
你所说的“就在之后”是什么意思?如果您在两条语句之间没有执行任何操作,那么即使 1 秒的超时也应该足够大了。
mysql> SET GLOBAL innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
| 50 |
+----------------------------+
mysql> SET SESSION innodb_lock_wait_timeout = 1;
mysql> SELECT @@innodb_lock_wait_timeout;
+----------------------------+
| @@innodb_lock_wait_timeout |
+----------------------------+
| 1 |
+----------------------------+
解释变量的 GLOBAL 与 SESSION: GLOBAL 值用于初始化连接启动时的 SESSION 值。之后,您可以更改 SESSION 值来影响您正在执行的操作。更改 GLOBAL 值对您没有影响current联系。
将超时更改为 1 是相当安全的(一旦您了解了 GLOBAL 与 SESSION)。唯一会改变的是出现该错误的频率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)