【问题标题】:mysql can't drop corrupt innodb tablemysql 无法删除损坏的 innodb 表
【发布时间】:2012-06-19 22:28:30
【问题描述】:

所以我正在处理一个磁盘空间不足并且大部分 InnoDB 表当然已经损坏的 MySQL 服务器。我正在尝试删除并重新创建损坏的表,但 MySQL 不会让我对它们做任何事情,包括修复。如您所见,这不是乐趣的尽头。应该注意的是,似乎只有这一个表会导致任何这些错误。

mysql> drop table myschema.mytable;
ERROR 2013 (HY000): Lost connection to MySQL server during query

mysql> repair table myschema.mytable;
#results in the following
| myschema.mytable | repair | Error    | Out of memory; restart server and try again (needed 2 bytes)               |
| myschema.mytable | repair | Error    | Incorrect information in file: './myschema/mytable.frm' |
| myschema.mytable | repair | error    | Corrupt 

mysql> describe myschema.mytable; 
ERROR 1037 (HY001): Out of memory; restart server and try again (needed 2 bytes) 

如果我停止服务器并将表的 .frm 和 ibd 文件移开,然后重新启动,我无法重新创建它,因为服务器说它已经存在(即使在 INFORMATION_SCHEMA 中看不到它)。在这种状态下,我也不能放弃它,因为服务器说它不存在。

我一直在寻找答案,但在这一点上,但我不是 DBA,所以我迷路了。我不知道如何修复这张桌子,我也不知道如何摆脱它。

有什么建议吗?

【问题讨论】:

  • 也许你也可以试试dba.stackexchange.com
  • 嗨@ben Hardy,如果我的回复回答了您的问题,请您批准并投票。谢谢。

标签: mysql innodb disaster-recovery


【解决方案1】:

我不确定我此时的回答是否对您有用,但我想它会对其他人有所帮助。

这不是很常见的问题。这种损坏的原因可能多种多样,但修复很简单。

You have to dump your table and recreate it again.

我们可以通过在my.cnf文件中设置innodb_force_recovery=1参数然后重启mysql来实现。

有关此参数的更多信息,请阅读此链接。 http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

一旦您的问题得到解决,您就可以删除该参数。

干杯!

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 2018-08-20
    • 1970-01-01
    • 2010-11-23
    • 2016-07-05
    • 2018-04-26
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多