2012-06-18 25 views
0

我的web應用程序代碼是用java,swing,hibernate組合在tomcat5中運行的。有些情況下,一個表在更新/刪除時被鎖定,並且在一段時間後不能自行解鎖[錯誤是:mysql lock wait timeout超時,請嘗試重新啓動事務],這會導致應用程序不可訪問。Mysql:如何識別表鎖等待並解鎖它

我必須編寫一個java調度程序,它將定期檢查鎖定狀態,並在某些指定時間後說30秒解鎖表格。

具體我想知道如何檢查表是否被鎖定?如何解鎖呢?

感謝

+0

我面臨同樣的問題,但我的想法解決它是不同的 - 我不知道它是否可以匹配你,因爲你沒有提供任何細節。據我所知,你應該不可能解鎖表鎖,因爲看起來它不會是同一個嘗試解鎖的線程,並且會被DB拒絕。 – Schlangi

回答

-1

你可以使用GET_LOCK以非常低的超時檢查鎖是否存在。如果返回代碼爲0,則另一個線程有一個鎖,否則您得到1,並且您的線程已鎖定。

至於如何解鎖它,這有點難。它可能是一個完全不同的應用程序,持有該鎖,並可能有一個很好的理由。我不知道是否有可能強行解鎖。但我不認爲你真的想這樣做。

+1

我不認爲它會起作用,GET_LOCK不會提供關於特定表鎖的信息。它只是用給定的名字創建一個鎖。 – Rakesh