繁体   English   中英

mysql无法删除损坏的innodb表

[英]mysql can't drop corrupt innodb table

因此,我正在处理一个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文件,然后重新启动,则无法重新创建它,因为服务器说它已经存在(即使在INFORMATION_SCHEMA中看不到)。 在这种状态下,我也无法删除它,因为服务器说它不在那儿。

我一直都在寻找答案,但此时此刻,我不是DBA,所以迷路了。 我不知道如何修复该表,也无法解决该表。

有什么建议么?

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

这不是很常见的问题。 造成这种损坏的原因可能有所不同,但解决方法很简单。

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

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

干杯!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM