mysql可以';t删除损坏的innodb表

mysql可以';t删除损坏的innodb表,mysql,innodb,disaster-recovery,Mysql,Innodb,Disaster Recovery,所以我要处理的是一个MySQL服务器,它的磁盘空间用完了,并且大部分都是InnoDB表,当然这些表已经损坏了。我试图删除并重新创建损坏的表,但MySQL不允许我对它们做任何事情,包括修复。正如你所看到的,这是无尽的乐趣。应该注意的是,似乎只有这一个表会导致这些错误 mysql> drop table myschema.mytable; ERROR 2013 (HY000): Lost connection to MySQL server during query mysql> re

所以我要处理的是一个MySQL服务器,它的磁盘空间用完了,并且大部分都是InnoDB表,当然这些表已经损坏了。我试图删除并重新创建损坏的表,但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文件移开,然后重新启动,我就无法重新创建它,因为服务器说它已经存在(即使在信息模式中看不到它)。在这种状态下,我也不能删除它,因为服务器说它不在那里

我到处寻找答案,但在这一点上,我不是DBA,所以我迷路了。我不知道如何修理这张桌子,也不知道如何把它扔掉


有什么建议吗

我不确定我在这一点上的回答是否对你有用,但我想它会帮助其他人

这不是一个很少见的问题。这种腐败的原因可能多种多样,但解决办法很简单

您必须转储表并重新创建它。

我们可以通过在my.cnf文件中设置
innodb\u force\u recovery=1
参数,然后重新启动mysql来实现这一点

有关此参数的详细信息,请阅读此链接

问题解决后,可以删除该参数


干杯

也许你也可以试试Hi@ben Hardy,如果我的回答回答了你的问题,请你批准并投票表决。谢谢