所以我正在处理一个磁盘空间不足的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所以我迷失了。我无法弄清楚如何修复这个表,我无法弄清楚如何摆脱它。
有什么建议吗?
答案 0 :(得分: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
修复问题后,您可以删除参数。
干杯!