找出锁定MySQL InnoDB表行的原因

找出锁定MySQL InnoDB表行的原因,mysql,Mysql,我使用带有InnoDB表的数据库。当我尝试更新一行时,我会收到“ERROR 1205(HY000):Lock wait timeout extered;try restarting transaction”消息,我在任何其他行(我已经尝试过)上都没有收到该消息 我如何调试它 SHOW PROCESSLIST; 只会产生休眠进程,而且由于它是一个InnoDB表,SHOW table STATUS基本上是无用的(似乎只适用于MyISAM表) 显示引擎INNODB状态 也不包含任何有用的东西;最新检

我使用带有InnoDB表的数据库。当我尝试更新一行时,我会收到“ERROR 1205(HY000):Lock wait timeout extered;try restarting transaction”消息,我在任何其他行(我已经尝试过)上都没有收到该消息

我如何调试它

SHOW PROCESSLIST;
只会产生休眠进程,而且由于它是一个InnoDB表,
SHOW table STATUS
基本上是无用的(似乎只适用于MyISAM表)

显示引擎INNODB状态

也不包含任何有用的东西;最新检测到的死锁部分包含3天前的两个事务,它们不再存在(线程ID不再出现在SHOW PROCESSLIST中),并且似乎不再相关

有没有办法知道是什么查询导致了问题?
另外,我还想看看InnoDB表上当前的锁,什么是现在的锁,而不是三天前的锁。

你检查过mysql的错误日志文件了吗?也许有更多的细节是哪个交易失败了

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

SHOW OPEN TABLES WHERE IN_Use=1

你检查过mysql的错误日志文件了吗?也许有更多的细节是哪个交易失败了

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

SHOW OPEN TABLES WHERE IN_Use=1

有一个问题,这个错误是同时发生的还是随机发生的?这可能是活动的一部分吗?SP中是否有错误处理(我假设您执行的是错误处理?)问题是否消失了?Kay,我通过终止进程修复了问题。我不知道这是怎么发生的,这似乎是一种每年只出现一次的罕见奇怪的错误。有一个问题,这个错误是同时发生的还是随机发生的?这可能是活动的一部分吗?SP中是否有错误处理(我假设您执行的是错误处理?)问题是否消失了?Kay,我通过终止进程修复了问题。我不知道这是怎么发生的,它似乎是一种非常罕见的奇怪的虫子,每年只出现一次。