Повреждения таблиц MyISAM


Несмотря на то, что формат таблиц MyISAM очень надежен (все изменения в таблице записываются до возвращения значения оператора SQL), таблица, тем не менее, может быть повреждена. Такое происходит в следующих случаях:

  • Процесс mysqld уничтожен во время осуществления записи;

  • Неожиданное отключение компьютера (например, если выключилось электропитание);

  • Ошибка аппаратного обеспечения;

  • Использование внешней программы (например myisamchk) на открытой таблице.

  • Ошибка программного обеспечения в коде MySQL или MyISAM.

Типичные признаки поврежденной таблицы следующие:

  • Во время выбора данных из таблицы выдается ошибка Incorrect key file for table: '...'. Try to repair it.

  • Запросы не находят в таблице строки или выдают неполные данные.

Проверить состояние таблицы можно при помощи команды CHECK TABLE. См. раздел Синтаксис CHECK TABLE.

Для восстановления поврежденного файла можно применить команду REPAIR TABLE. Синтаксис REPAIR TABLE. Таблицу можно восстановить и в случае, когда не запущен mysqld, при помощи команды myisamchk. Синтаксис запуска myisamchk.

Если таблицы повреждены значительно, необходимо выяснить причину произошедшего! Что делать, если работа MySQL сопровождается постоянными сбоями.

Сначала следует определить, послужил ли причиной повреждения таблицы сбой mysqld (это можно легко проверить, просмотрев последние строки restarted mysqld в файле ошибок mysqld). Если дело не в этом, то необходимо составить подробное описание произошедшего. Создание контрольного примера при повреждении таблиц.