我们有一个网站,上面有一张税率表,有一天不知何故被破坏了。
我尝试从表中选择 * 但实际上花了几个小时才产生任何结果。
我尝试截断和删除表格。产生与选择相同的结果。 最终 Action 停止了。所以,我运行了一个
myisamchk -r theTable.MYI
修复后看起来没问题,但我尝试再次从中选择 * 并仍然产生相同的结果。
引擎是MySQL
复制表格很容易,我可以删除表格吗?*(frm,MYD,MYI)?
或者如果我正在做的事情有更好的方法。
最佳答案
是的,您可以删除 .FRM、.MYD、.MYI 文件以删除 MyISAM 表。当您 DROP TABLE
时会发生这种情况。
MyISAM 表因损坏而臭名昭著。但是在重新创建表后你反复遇到问题这一事实让我怀疑你的硬盘驱动器是否有故障。值得testing the health of your hard drive .
您还应该改用 InnoDB 而不是 MyISAM。 InnoDB 有很多防止损坏的保护措施,包括页面校验和、同步磁盘写入、崩溃恢复等。MyISAM 正在慢慢淘汰,并且没有收到 MySQL 开发人员的任何修复。 InnoDB 现在是 MySQL 5.5(大约 2010 年)的默认存储引擎,它将继续成为 future 发展的重点。
请注意,使用 InnoDB,您不能像使用 MyISAM 那样简单地删除文件来实现删除表。您必须使用 DROP TABLE
,以便 InnoDB 将删除与其内部数据字典同步。
关于MySQL 表损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193546/