2013-08-27 143 views
2

當我嘗試刪除數據庫時,它會掛起。進程列表顯示:無法在mysql中刪除數據庫

20045 | root | localhost | NULL | Query | 4 | Waiting for table metadata lock | drop database dbname1 

整個數據庫中沒有外鍵並且沒有鎖定。下面是相同的細節:

mysql> 
mysql> select * from INNODB_LOCKS ; 
Empty set (0.00 sec) 

mysql> select * from INNODB_LOCK_WAITS ; 
Empty set (0.01 sec) 

我不知道爲什麼會發生這種情況,任何人有任何關於這個問題的想法?我正在使用MySQL 5.5.31-0ubuntu0.12.04.1-log(Ubuntu)。

+0

檢查此鏈接:http://stackoverflow.com/questions/10871388/dropping-table-makes-mysql-hang – user1502952

回答

1

如果您立即想解決問題,只需重新啓動mysql,然後再次嘗試刪除數據庫。我也有一些時間面臨類似的問題,上面的技巧總是適用於我。

0

有多種原因:

  • 一段時間你的數據庫是在使用>>可能是當你試圖刪除一些交易/查詢執行。
  • 可能會打開查詢窗口,並選擇數據庫名稱。在這種情況下,它會告訴查詢窗口使用數據庫,因此您不能刪除數據庫。
+0

嗨, 感謝您的答覆。是的,你給出的鏈接很好地克服了這個問題。 其實我知道如何克服的方式,但我希望它的一些預防方法相同。更多細節見下面我的回答我做了什麼,我知道它不是完整的解決方案,但至少我知道這些事情何時發生,並在回覆中,我收到警報郵件或應用任何克服方法 – Rajnish

0

感謝大家的回覆。所有的方法都可以很好地解決這個問題。

其實我知道如何克服的方式,但我希望它的一些預防方法相同。

看到實際上每當我遇到這個問題只是殺死所有睡眠線程和重新運行改變或下降將解決它或任何你解釋的方法也將工作。

但是看到我們需要一些停機時間的所有方法,您知道它對於生產數據庫意味着什麼。

主要的事情我觀察到一些早期的命令/事務使用該表,現在他們處於睡眠模式,這是一次又一次導致這些情況。

應該有一些相同的預防方法。我仍在尋找它。
一個簡單的解決方案,我目前正在使用的是,我創建了一個定期檢查(每隔一分鐘)的bash腳本 MySQL進程列表,如果有任何線程即等待元數據鎖定並且時間超過30秒 發送警報電子郵件或執行上述所有步驟來克服這些情況。

我知道這不是完整的解決方案,但腳本總是發送警報,每當數據庫面臨相同的情況。
仍然我正在尋找最佳的解決方案,只要我得到,我會在這裏發佈。