Mysql:如何识别表锁等待和解锁它

时间:2012-06-18 11:35:26

标签: java mysql

我的Web应用程序代码是用java,swing,hibernate组合编写的,它运行在tomcat5中。有一些情况是一个表在更新/删除时被锁定而在一段时间后没有自行解锁[错误是:超出了mysql锁等待超时,尝试重新启动事务],这导致应用程序无法访问。

我必须编写一个java调度程序,它会定期检查锁定状态,并在指定时间后说30秒解锁表。

要具体 我想知道如何检查表是否已锁定? 如何解锁它?

由于

1 个答案:

答案 0 :(得分:-1)

您可以使用超时非常低的GET_LOCK来检查是否存在锁定。如果返回码是0,则另一个线程有一个锁,否则你得到1并且你的线程有锁。

至于如何解锁它,这有点困难。它可能是一个完全不同的应用程序,持有锁,它可能是有充分理由持有它。我不知道是否有可能强行打破锁定。但我不认为你真的想这样做。