我想模拟一个表的错误,这样 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 |
+-------------------+-------+----------+-------------------------------------------------------+