昨天在处理mysql数据的时候提示:Got error 127 from table handler。
症状为:取出前面的数据没问题,但是在遇到一条游问题的数据时显示“Got error 127 from table handler”。
解决方案:
1.先使用 check table mytable;命令确定问题数据行
比如:
mysql> check table mytable;
+-------------------+-------+----------+----------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------+-------+----------+----------------------------------------------------+
| mydb.mytable | check | error | got error: 5 when reading datafile at record: 1291 |
| mydb.mytable | check | error | Corrupt |
+-------------------+-------+----------+----------------------------------------------------+
2 rows in set (3.09 sec)
2.check的结果与测试得到的差错点一致,为第1291条数据开始便有问题了!然而在这个时候尝试取出数据时失败了:
以下是代码片段: mysql> select * from `mytable` limit 1291, 1; ERROR 1016: Can't open file: 'mytable.MYD'. (errno: 145) |
3.修复表时最好先锁定表,否则有可能导致数据全部丢失
4.repair table mytable;
mysql> repair table mytable;
+-------------------+--------+----------+----------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------+--------+----------+----------------------------------------+
| mydb.mytable | repair | warning | Number of rows changed from 30030 to 0 |
| mydb.mytable | repair | status | OK |
+-------------------+--------+----------+----------------------------------------+
2 rows in set (3.10 sec)
5.收工