[MySQL] Что делать, если не помогает REPAIR TABLE и myisamchk?

vulnerabilities-threaten-to-crash-mysql-databasesИногда при сбое записи в дисковую систему на сервере, а также при внезапной перезагрузке сервера может возникнуть неприятная ситуация с таблицей БД MySQL. В основном это происходит с большими и как следствие самыми важными таблицами.

Таблица не восстанавливается ни командой REPAIR TABLE, ни через командную строку myisamchk.

Может выдаваться примерно такие записи в консоль:

Found block with too small length at NNNNNNN; Skipped
Found link that points at NNNNNNNNNNNNNNN (outside data file) at NNNNNNN
Not enough memory for blob at NNNNNNN (need NNNNNNNNNNNNN)
Operation failed

Что же делать?

В данном случае необходимо отключить проверку на размер записи при восстановлении таблицы.
ключ —max-record-length=len
Skip rows larger than the given length if myisamchk cannot allocate memory to hold them.
Перевод: Пропуск записей больше заданной длины, если myisamchk не может выделить память для их обработки.

myisamchk --max-record-length=0 -r название_таблицы

И все должно восстановиться!

Берегите себя и свои данные, почаще делайте бекапы!

Comments are closed