2012-06-19 132 views
2

因此,我正在處理一個MySQL服務器,磁盤空間不足,並且大多數InnoDB表已被破壞。我試圖刪除並重新創建損壞的表,但MySQL不會讓我對它們做任何事情,包括修復。正如你所看到的,這不是樂趣的結束。應該指出的是,只有這一張表似乎會導致任何這些錯誤。mysql無法刪除損壞的innodb表

mysql> drop table myschema.mytable; 
ERROR 2013 (HY000): Lost connection to MySQL server during query 

mysql> repair table myschema.mytable; 
#results in the following 
| myschema.mytable | repair | Error | Out of memory; restart server and try again (needed 2 bytes)    | 
| myschema.mytable | repair | Error | Incorrect information in file: './myschema/mytable.frm' | 
| myschema.mytable | repair | error | Corrupt 

mysql> describe myschema.mytable; 
ERROR 1037 (HY001): Out of memory; restart server and try again (needed 2 bytes) 

如果我停止服務器和移動臺的.FRM和IBD文件的方式進行,然後重新啓動,我不能重新創建它,因爲服務器說,它已經存在(儘管它不能在INFORMATION_SCHEMA中可見)。在這種狀態下,我不能放棄,因爲服務器說它不在那裏。

我看起來很高和很低的答案,但在這一點上,但我不是DBA,所以我迷路了。我無法弄清楚如何解決這個問題,但我無法弄清楚如何擺脫它。

有什麼建議嗎?

+0

也許你也可以嘗試在http://dba.stackexchange.com/ – biziclop

+0

您好@ben Hardy,如果我的回覆已經回答了您的問題,請您批准它,並提出上訴。謝謝。 –

回答

1

我不知道我的答案在這一點上對你有沒有用,但我想它會幫助別人。

這不是非常罕見的問題。這種腐敗的原因可能有所不同,但修復很簡單。

You have to dump your table and recreate it again.

我們可以通過設置my.cnf文件innodb_force_recovery=1參數實現這一目標,然後重新啓動mysql的。

有關此參數的更多信息,請閱讀此鏈接。 http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

一旦您的問題得到解決,您可以刪除該參數。

乾杯!