我的Web应用程序代码是用java,swing,hibernate组合编写的,它运行在tomcat5中。有一些情况是一个表在更新/删除时被锁定而在一段时间后没有自行解锁[错误是:超出了mysql锁等待超时,尝试重新启动事务],这导致应用程序无法访问。
我必须编写一个java调度程序,它会定期检查锁定状态,并在指定时间后说30秒解锁表。
要具体 我想知道如何检查表是否已锁定? 和如何解锁它?
由于
答案 0 :(得分:-1)
您可以使用超时非常低的GET_LOCK
来检查是否存在锁定。如果返回码是0,则另一个线程有一个锁,否则你得到1并且你的线程有锁。
至于如何解锁它,这有点困难。它可能是一个完全不同的应用程序,持有锁,它可能是有充分理由持有它。我不知道是否有可能强行打破锁定。但我不认为你真的想这样做。