MySQL 错误:超过锁定等待超时;尝试重新启动事务查询
Posted
技术标签:
【中文标题】MySQL 错误:超过锁定等待超时;尝试重新启动事务查询【英文标题】:MySQL Error: Lock wait timeout exceeded; try restarting transaction Query 【发布时间】:2014-09-05 04:31:49 【问题描述】:我发现很多人从 mysql 收到相同的错误消息,错误状态相同=41000 和错误代码相同=1205。
但其中大多数涉及 2 个事务和一个死锁。
基于SHOW ENGINE INNODB STATUS
的输出,只有1笔交易:
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation, @@session.tx_isolation;
+-----------------------+-----------------+------------------------+
| @@GLOBAL.tx_isolation | @@tx_isolation | @@session.tx_isolation |
+-----------------------+-----------------+------------------------+
| REPEATABLE-READ | REPEATABLE-READ | REPEATABLE-READ |
+-----------------------+-----------------+------------------------+
1 row in set (0.00 sec)
如果我将自动提交设置为 true(我使用的是 Apache Common DBCP 1.4)建立连接,则不存在此问题。
【问题讨论】:
【参考方案1】:我发现了问题。
问题在于 MySQL 期望同一事务中的所有查询都在同一 TCP 连接中完成,而通过 QueryRunner 执行的每个 SQL 都可能会启动到数据库的新 TCP 连接(尽管它可以通过多种方式进行控制)。
【讨论】:
以上是关于MySQL 错误:超过锁定等待超时;尝试重新启动事务查询的主要内容,如果未能解决你的问题,请参考以下文章
超过锁定等待超时;尝试重新启动事务 MYSQL Python
使用 C# 在 Mysql 上死锁 - “超过锁定等待超时;尝试重新启动事务”
收到警告:SQL 错误:1205,SQLState:41000 错误:超过锁定等待超时;尝试重新启动事务。使用休眠保存记录
mysql_query("START TRANSACTION")- 超过锁定等待超时;尝试在 Codeigniter Mysql 中重新启动事务