2010-07-10 47 views
4

我無法刪除/丟棄墜毀的Innodb表。我收到以下錯誤:刪除墜毀的Innodb表

ERROR 1051(42S02):未知表 '賬戶'

如果我想創建它,我得到以下錯誤:

ERROR 1005(HY000):能否」 t創建表'帳戶'(errno:-1)

這種情況發生在我的服務器意外斷電後。

Regards

回答

3

這裏我也http://www.randombugs.com/linux/crash-innodb-table.html發現了這個問題,它似乎只是刪除ibdata文件並重新啓動mysql可以解決這個問題。無論如何,如果你沒有任何備份,這不是真正的解決方案。

+1

如果您使用的是innodb_file_per_table,那麼您的表格數據將不會存儲在默認的ibdata1和日誌文件中,因此刪除這些文件不會成爲問題。當然,這不是一個理想的解決方案,但對於我的目的而言,ibdata1是一個黑盒子,比嘗試恢復更容易刪除。 – glyph 2013-11-18 17:03:08

3

是否在刪除表格幫助之前關閉外鍵約束?

set foreign_key_checks=0; 
drop table <table>; 
set foreign_key_checks=1; 

有一個bug報告,其中詳細說明類似的東西,但我並不清楚它是否是同一個問題:

http://bugs.mysql.com/bug.php?id=5784

如果沒有,你可以嘗試mysqlcheck

mysqlcheck -u root -p <dbname> --auto-repair --check --optimize --databases 

您必須檢查文檔以獲取最適合您數據庫的選項。請務必注意文檔第一段中有關在此命令運行時放置在表上的鎖定的註釋。

+1

我試過了,它沒有工作。 – Sacx 2011-02-25 08:33:44

+0

設置foreign_key_checks = 0作品,謝謝! – antongorodezkiy 2013-06-20 12:37:52

1

我的猜測是InnoDB甚至沒有加載(檢查SHOW ENGINES),所以在你首先解決這個問題之前,你不能去掉它。

通常你可以在恢復模式3日開始的InnoDB起來,一滴無論你需要什麼,然後關機並取出恢復模式設置:

http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

0

簡單的解決方案,爲我工作。

  1. 試着刪除表格。

    drop table tableOne;

你會看到錯誤:

ERROR 1051 (42S02): Unknown table 'tableOne' 
  • 複製從另一個數據庫中創建表的語句或寫。(1)NOT NULL)ENGINE = InnoDB;(3)NOT NULL,

  • 成功

    Query OK, 0 rows affected (0.03 sec) 
    
    1. 刪除該表

      drop table tableOne; 
      

    成功

    Query OK, 0 rows affected (0.01 sec)