【问题标题】:MySQL Table CorruptedMySQL 表损坏
【发布时间】:2014-01-17 18:47:35
【问题描述】:

我们有一个网站,上面有一个税率表,有一天不知何故被破坏了。

我尝试从 theTable 中选择 *,但实际上花了几个小时才得到任何结果。

我尝试截断并删除表格。产生与选择相同的结果。 最终动作停止了。所以,我跑了一个

myisamchk -r theTable.MYI

修复后看起来一切正常,但我尝试再次从中选择 * 并仍然产生相同的结果。

引擎是 MySQL

重现表格很容易,我可以删除 theTable.* (frm, MYD, MYI) 吗?

或者如果我正在做的事情有更好的方法。

【问题讨论】:

    标签: mysql sql linux


    【解决方案1】:

    是的,您可以删除 .FRM、.MYD、.MYI 文件以删除 MyISAM 表。这就是当您DROP TABLE 时发生的情况。

    MyISAM 表因损坏而臭名昭著。但是,您在重新创建表后反复出现问题的事实让我想知道您的硬盘驱动器是否出现故障。值得testing the health of your hard drive

    您还应该改用 InnoDB 而不是 MyISAM。 InnoDB 有很多防止损坏的保护措施,包括页面校验和、同步磁盘写入、崩溃恢复等。MyISAM 正在慢慢被淘汰,并且没有从 MySQL 开发人员那里得到任何修复。 InnoDB 现在是 MySQL 5.5(大约 2010 年)的默认存储引擎,它将继续成为未来发展的重点。

    请注意,使用 InnoDB,您不能像使用 MyISAM 一样简单地删除文件来实现删除表。您必须使用DROP TABLE,以便 InnoDB 将该删除与其内部数据字典同步。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-06
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      相关资源
      最近更新 更多