删除Crashed Innodb表

时间:2010-07-10 10:54:40

标签: mysql crash innodb recovery

我无法删除/删除崩溃的Innodb表。我收到以下错误:

错误1051(42S02):未知表'帐户'

如果我想创建它,我会收到以下错误:

错误1005(HY000):无法创建表'帐户'(错误号:-1)

在意外断电后,我的服务器会发生这种情况。

此致

4 个答案:

答案 0 :(得分:3)

在删除表帮助之前关闭外键约束吗?

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

有一个错误报告详细说明了类似的内容,但我不清楚它是否是同一个问题:

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

如果没有,您可以尝试mysqlcheck

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

您必须检查文档以获取最适合您数据库的选项。请务必注意文档第一段中有关在此命令运行时放置在表上的锁的注释。

答案 1 :(得分:3)

我在这里发现了这个问题http://www.randombugs.com/linux/crash-innodb-table.html,它似乎只是删除ibdata文件并重新启动mysql可以解决这个问题。无论如何,如果您没有任何备份,这不是真正的解决方案。

答案 2 :(得分:1)

答案 3 :(得分:0)

对我有用的简单解决方案。

  1. 尝试删除表格。

    drop table tableOne;

  2. 你会看到错误:

    ERROR 1051 (42S02): Unknown table 'tableOne'
    
    1. 从另一个数据库复制该表的create语句或写入。

      CREATE TABLE tableOneID int(11)NOT NULL,LOCKED tinyint(1)NOT NULL)ENGINE = InnoDB;

    2. 成功

      Query OK, 0 rows affected (0.03 sec)
      
      1. 放弃表格

        drop table tableOne;  
        
      2. 成功

            Query OK, 0 rows affected (0.01 sec)