MySQL Phantom表

时间:2011-10-04 18:46:18

标签: mysql sql

我在MySQL表上做了一个drop查询...我的GUI界面在进程中间崩溃了。该表不存在于列表中;然而,当我去做一个新的时,它说已经有一个有这个名字的桌子了。我尝试在这个幻像表上执行DROP TABLE和RENAME,但两个查询都无休止地运行。

仅供参考我无法重启MySQL,因为我们的实时网站可能会破坏。

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

tablename匹配文件系统中的三个文件,其中.frm.myd.myi扩展名(分别用于表定义,数据和索引文件)其中一个文件已损坏,这会阻止MySQL执行您的订单。

选项1从文件系统中删除文件
查看文件系统以查看哪个文件仍然存在 如果缺少.frm文件,您应该能够删除其他两个文件 如果.frm文件仍然存在不删除,MySQL仍然锁定该文件。

选项2修复数据库
使用myisamchk诊断和修复数据库。

请参阅:http://forge.mysql.com/wiki/MySQL_Internals_File_Formats
并且:http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html

答案 2 :(得分:0)

检查mysql存储数据库的目录。在Ubuntu上它位于/ var / lib / mysql中,但它可能会有所不同,具体取决于您的操作系统和配置。在该目录中,每个数据库都有一个目录,进入有问题的数据库的目录,并删除任何扩展名为.frm,.myd和.myi的表名的文件。

答案 3 :(得分:0)

听起来你所拥有的服务与认为的服务器之间存在脱节。

您需要SSH访问权限并且必须手动修复表。

登录SSH并输入:

mysql -u root -p

输入你的root mysql密码。

然后

show databases

它将列出您服务器上的所有数据库。

使用

选择所需的数据库
use databasename;

然后

show tables;

这应该列出数据库中的每个表。它可能仍然出现在那里,所以做一个

drop tablename;

希望这会纠正您的问题。

答案 4 :(得分:0)

结束从备份恢复...文件系统中的编辑文件很可怕,可能需要重新启动。