Search the MySQL manual:
MySQL Manual

Buy this Reference Manual in softcover from Barnes & Noble!

/ / Up / Table of Contents

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 недоступен.

User Comments

Posted by on Friday May 17 2002, @6:24am [Delete] [Edit]

MySQL Berkley tables cannot be repaired using
REPAIR TABLE. However, after a BIG hardware
crash, I was able to recover data that I thought
had been lost by;
1) Shutting down all clients
2) Reloading the database (using mysqladmin
reload) then 3) Shutting down and restarting the
mySQL server.

I am truly amazed. :)) Well done guys!

Add your own comment.

Top / / / Up / Table of Contents