4.4.5 Синтаксис REPAIR TABLE
REPAIR TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED] [USE_FRM]
REPAIR TABLE
работает только на таблицах типа MyISAM
и эквивалентна
выполнению на таблице myisamchk -r table_name
.
При обыкновенной работе запускать эту команду не приходится, но если
случится катастрофа, то с помощью REPAIR TABLE
практически наверняка
удастся вернуть все данные из таблицы MyISAM
. Если таблицы сильно
повреждены, то следует постараться выяснить, что послужило этому причиной!
Обращайтесь к разделам section A.4.1 Что делать, если работа MySQL сопровождается постоянными сбоями и See section 7.1.3 Проблемы с таблицами MyISAM..
REPAIR TABLE
ремонтирует таблицу, которая, возможно, повреждена. Команда
возвращает таблицу со следующими столбцами:
Столбец | Значение
|
Table | Имя таблицы
|
Op | Всегда ``repair''
|
Msg_type | Одно из значений status , error , info или warning .
|
Msg_text | Само сообщение.
|
Заметим, что по каждой ремонтируемой таблице может быть выдано много строк
информации. Последняя строка будет представлять Msg_type status
и, как
правило, должна содержать OK
. Если выдается что-либо отличное от OK
, то
следует попробовать исправить таблицу с помощью myisamchk -o
, поскольку в
REPAIR TABLE
пока реализованы не все опции myisamchk
. В скором будущем мы
сделаем команду более гибкой.
Если указан QUICK
, то MySQL будет пытаться сделать REPAIR
только
индексного дерева.
Если используется EXTENDED
, то MySQL будет создавать индекс строка за
строкой вместо создания по одному индексу единоразово с помощью
сортировки; такая техника может работать лучше сортировки для ключей
фиксированной длины, если речь идет о хорошо сжимаемых ключах типа char()
большой длины.
Что касается MySQL 4.0.2, то тут для REPAIR
существует режим USE_FRM
.
Используйте его, если отсутствует файл `.MYI' или поврежден его заголовок. В
этом режиме MySQL воссоздаст таблицу, используя информацию из файла `.frm'.
Этот вид исправления в myisamchk
недоступен.