7.1.3.1 Повреждения таблиц MyISAM
Несмотря на то, что формат таблиц MyISAM
очень надежен (все изменения в
таблице записываются до возвращения значения оператора SQL), таблица, тем
не менее, может быть повреждена. Такое происходит в следующих случаях:
-
Процесс
mysqld
уничтожен во время осуществления записи;
-
Неожиданное отключение компьютера (например, если выключилось
электропитание);
-
Ошибка аппаратного обеспечения;
-
Использование внешней программы (например
myisamchk
) на открытой
таблице.
-
Ошибка программного обеспечения в коде MySQL или
MyISAM
.
Типичные признаки поврежденной таблицы следующие:
-
Во время выбора данных из таблицы выдается ошибка
Incorrect key file
for table: '...'. Try to repair it
.
-
Запросы не находят в таблице строки или выдают неполные данные.
Проверить состояние таблицы можно при помощи команды CHECK TABLE
. См.
раздел See section 4.4.4 Синтаксис CHECK TABLE
.
Для восстановления поврежденного файла можно применить команду REPAIR
TABLE
. See section 4.4.5 Синтаксис REPAIR TABLE
. Таблицу можно восстановить и в
случае, когда не запущен mysqld
, при помощи команды myisamchk
. See section 4.4.6.1 Синтаксис запуска myisamchk
.
Если таблицы повреждены значительно, необходимо выяснить причину
произошедшего! See section A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями.
Сначала следует определить, послужил ли
причиной повреждения таблицы сбой mysqld
(это можно легко
проверить, просмотрев последние строки restarted mysqld
в файле
ошибок mysqld
). Если дело не в этом, то необходимо составить
подробное описание произошедшего. See section E.1.6 Создание контрольного примера при повреждении таблиц.