我无法删除/删除崩溃的 Innodb 表。我收到以下错误:
错误 1051 (42S02):未知表“帐户”
如果我想创建它,我会收到以下错误:
错误 1005 (HY000): 无法创建表 'accounts' (errno: -1)
意外断电后,这发生在我的服务器上。
问候
我在这里也发现了这个问题http://www.randombugs.com/linux/crash-innodb-table.html似乎只需删除 ibdata 文件并重新启动 mysql 就可以解决这个问题。无论如何,如果您没有任何备份,这并不是真正的解决方案。
在删除表之前关闭外键约束有帮助吗?
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
您必须检查文档以获取最适合您的数据库的选项。请务必注意文档第一段中有关在此命令运行时放置在表上的锁的注释。
我的猜测是 InnoDB 甚至没有加载(检查 SHOW ENGINES),所以在你首先解决这个问题之前你不能删除它。
通常你可以在恢复模式 3 中启动 InnoDB,丢弃你需要的任何东西,然后关闭并删除恢复模式设置:
http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
对我有用的简单解决方案。
尝试删除表。
删除表tableOne;
你会看到错误:
ERROR 1051 (42S02): Unknown table 'tableOne'
从另一个数据库复制该表的创建语句或编写它。
创建表tableOne
( ID
int(11)非空, LOCKED
tinyint(1)非空)引擎=InnoDB;
成功的
Query OK, 0 rows affected (0.03 sec)
放下桌子
drop table tableOne;
成功的
Query OK, 0 rows affected (0.01 sec)