找出锁定MySQL InnoDB表行的内容

时间:2014-07-22 06:32:41

标签: mysql

我使用带有InnoDB表的数据库。当我尝试更新一行时,我得到" ERROR 1205(HY000):超过锁定等待超时;尝试重启交易"消息,我不会在任何其他行上(我已经尝试过)。

我该如何调试?

SHOW PROCESSLIST;

只会产生休眠进程,因为它是一个InnoDB表,SHOW TABLE STATUS基本没用(似乎只适用于MyISAM表)。

  

SHOW ENGINE INNODB状态

也不包含任何有用的内容;最新检测到的DEADLOCK部分包含3天前不再存在的两个事务(线程ID不再出现在SHOW PROCESSLIST中),似乎不再相关。

有什么方法可以了解哪些查询导致了问题? 另外,我希望看到InnoDB表上的当前锁定,现在锁定什么 - 而不是三天前。

1 个答案:

答案 0 :(得分:4)

你检查过mysql的错误日志文件吗?也许有更多细节可以说明失败的交易。

要显示正在使用的所有表,只需执行此语法

SHOW OPEN TABLES WHERE IN_Use=1
相关问题