删除InnoDB数据库时出错


8

我试图在mysql中删除数据库,但每次遇到此错误

ERROR 2013 (HY000): Lost connection to MySQL server during query

甚至以root用户身份登录。

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

如何删除该数据库?

Answers:


10

恐怕您不能删除数据库。

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

我在后面写过Mar 02, 2012InnoDB表SELECT返回错误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到该新数据库中。

如果您需要数据库使用相同的名称,则BAD NEWS !!!!您将对ibdata1进行大修。还有更多步骤:

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

步骤05)执行InnoDB基础结构清理(请参阅我的Oct 29, 2010StackOverflow帖子

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

试试看 !!!


非常感谢罗兰多!很棒的答复。希望有一种修复该数据库的方法。希望它具有相同的名称:)
giorgio79

我现在运行MySQL一段时间,前一天第一次发生这种情况,谢谢您的解释。
webLacky3rdClass 2013年

1
如果您无法删除数据库并且清理的第二步是删除所有数据库,那么如何执行InnoDB基础架构清理?
bancer 2014年

可能是一种罕见的情况,但是我在将转储作为后台作业还原时发生了这种情况。父终端死亡,并且直到恢复连接被终止后才能删除数据库。
STW 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.