删除 InnoDB 数据库时出错

gio*_*o79 9 mysql innodb

我试图在 mysql 中删除一个数据库,但每次我收到这个错误

ERROR 2013 (HY000): Lost connection to MySQL server during query
Run Code Online (Sandbox Code Playgroud)

甚至以 root 身份登录。

最初,我有一个无法重新创建的损坏表,因此我决定重新创建数据库。我每个表都有 innodb 文件,不确定这是否重要。

我怎样才能删除这个数据库?

Rol*_*DBA 10

恐怕你不能删除数据库。

问题在于损坏的表。它不一定是.ibd文件。它很可能是 ibdata1 中的数据字典条目(请参阅 ibdata1 的图示)。

我写了这个Mar 02, 2012InnoDB 表 SELECT 返回 ERROR 2006 (HY000): MySQL 服务器已经消失(停电后)

尽管很乏味,但您可以通过以下方法将其他表保存在该损坏的数据库中bad_db

步骤 01) USE bad_db

步骤 02)SELECT COUNT(1) FROM tablename;bad_db. 收集所有在您尝试运行计数时不会使 mysqld 崩溃的表名。

步骤 03) 运行mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql 所有没有使 mysqld 崩溃的表。

如果您打算使用不同的数据库名称,则重新加载bad_db_goodtables.sql到该新数据库中。

如果您需要数据库同名,坏消息!!!您将对 ibdata1 进行大修。还有更多步骤:

步骤 04) mysqldump 所有其他数据库到单独的转储文件中

步骤 05)执行 InnoDB 基础设施清理(参见我的Oct 29, 2010StackOverflow 帖子

步骤 06) 重新加载所有其他 mysqldumps 好的数据库。

试一试 !!!