如何修改表导致 CHECK TABLE 在 mysql 5.1 中失败?

如何修改表导致 CHECK TABLE 在 mysql 5.1 中失败?

我想模拟一个表的错误,这样 CHECK TABLE 就会失败。有没有办法模拟它,这样表上的 CHECK TABLE 就会失败?

答案1

警告:在执行此操作之前,请确保您有良好的备份,因为将要丢失数据。现在可能是确保您已binlog启用并知道如何执行时间点恢复的好时机。


您可以通过关闭 MySQL、在编辑器中打开数据库文件、更改/删除一堆内容、保存文件,然后重新启动 MySQL 来导致损坏的表。

如果你使用的是 MyISAM 表,那么只需编辑/var/lib/mysql/<db_name>/<table_name>.MYD。如果你使用的是 InnoDB 和启用innodb_file_per_table后,可能没有简单的方法可以做到这一点。如果你innodb_file_per_table启用,然后编辑该/var/lib/mysql/<db_name/<table_name>.ibd文件。

我刚刚用 MyISAM 表测试了这一点:

mysql> check table watchdog;
+-------------------+-------+----------+-------------------------------------------------------+
| Table             | Op    | Msg_type | Msg_text                                              |
+-------------------+-------+----------+-------------------------------------------------------+
| e_d7.watchdog     | check | error    | Size of datafile is: 151154         Should be: 162296 | 
| e_d7.watchdog     | check | error    | Corrupt                                               | 
+-------------------+-------+----------+-------------------------------------------------------+

相关内容