поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    A.6.1. Проблемы с ALTER TABLE

    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 - в этом случае, однако, для восстановления данных достаточно будет просто переименовать ее на системном уровне.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100