Битые таблицы myisam при переезде

Категория: / DEV Блог / PHP (LAMP)
После смены сервера возникла проблема с некоторыми таблицами myisam:

mysql> select * from ph_tags;
ERROR 1034 (HY000): Incorrect key file for table 'ph_tags'; try to repair it


Причем ни repair через клиент mysql, ни myisamchk

find /var/db/mysql -type f -name 'ph_tags.MYI' -exec myisamchk --force -o -r -v {} \;


не cмогли восстановить таблицу.

mysql> repair table ph_tags;
+------------------+--------+----------+----------------------------------------------------------+
| Table            | Op     | Msg_type | Msg_text                                                 |
+------------------+--------+----------+----------------------------------------------------------+
| titsgtfo.ph_tags | repair | Error    | Incorrect key file for table 'ph_tags'; try to repair it |
| titsgtfo.ph_tags | repair | error    | Corrupt                                                  |
+------------------+--------+----------+----------------------------------------------------------+


Ларчик открылся так:

В Mysql есть конструкция, которая кстати уже depricated...

RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'


Указываем имя таблицы, скармливаем ей путь до копии файлов таблицы (.FRM, .MYI, .MYD)
и mysql успешно восстановит испорченные данные данные.

На всякий случай после рестора

mysql> repair table ph_tags;
+------------------+--------+----------+----------------------------------------------------------+
| Table            | Op     | Msg_type | Msg_text                                                 |
+------------------+--------+----------+----------------------------------------------------------+
| titsgtfo.ph_tags | repair | ok        | ok
+------------------+--------+----------+----------------------------------------------------------+