ALTER TABLE изменяет таблицу
в соответствии с текущей
кодировкой. Если при выполнении
ALTER TABLE выдается ошибка
дублирующегося ключа, то причина
либо в том, что новая кодировка
отображает ключи в одинаковые
значения, либо в том, что таблица
повреждена. В последнем случае на
таблице необходимо выполнить
REPAIR TABLE.
Если работа ALTER TABLE
прекращается с ошибкой, подобной
приведенной ниже:
Error on rename of './database/name.frm' to
'./database/B-a.frm' (Errcode: 17)
то проблема может быть связана с
тем, что MySQL аварийно завершился на
предыдущей команде ALTER
TABLE и осталась старая таблица
с именем A-что_нибудь
или B-что_нибудь. В этом
случае перейдите в каталог данных
MySQL и удалите все файлы, имена
которых начинаются с A-
или B- (их можно и не
удалять, а куда-либо переместить).
ALTER TABLE работает
следующим образом:
Создается новая таблица с именем
A-xxx с заданными в
запросе изменениями.
Все строки старой таблицы
копируются в A-xxx.
Старая таблица
переименовывается в
B-xxx.
A-xxx
переименовывается в имя старой
таблицы.
Удаляется B-xxx.
Если что-то приключится при
операции переименования, MySQL
попытается отменить изменения.
Если случится что-то серьезное
(чего произойти, конечно, не
должно), MySQL может оставить старую
таблицу именованной как
B-xxx - в этом случае,
однако, для восстановления данных
достаточно будет просто
переименовать ее на системном
уровне.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
