Ошибка повторяющегося имени столбца после отмены изменения - PullRequest
2 голосов
/ 03 марта 2011

Я создал миграцию базы данных Rails, чтобы добавить новый столбец в таблицу в моей базе данных, но после того, как я заметил, что это занимает намного больше времени, чем ожидалось (15 минут плюс), я вручную убил процесс ruby, выполняющий миграцию. Затем я понял, что время выполнения не было необычным из-за количества данных в таблице, поэтому я попытался запустить его снова. Теперь я получаю ошибку:

Mysql::Error: Duplicate column name 'new_column': ALTER TABLE `table_name` ADD `new_column` varchar(255)

Однако, когда я вручную захожу в MySQL, desc table_name показывает, что столбец не существует, и попытка удалить его вручную (alter table table_name drop new_column) говорит мне:

ERROR 1091 (42000): Can't DROP 'new_column'; check that column/key exists

Похоже, что прерывание начального процесса добавления привело к тому, что вещи оказались в несовместимом состоянии. Что мне нужно сделать, чтобы решить эту проблему?

Редактировать : я попытался добавить вручную (скопировав именно DDL из вышеприведенной ошибки), затем сбросив столбец в приглашении MySQL, и оба работали нормально, но rake db:migrate продолжает выдавать ошибку выше.

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Похоже, я случайно запускал ручные команды MySQL для неверной базы данных (я не переключался на версию базы данных "для разработки"). Используя правильную базу данных, я смог вручную удалить ошибочный столбец.

0 голосов
/ 03 марта 2011

вы можете попробовать это перейти по этому пути

/var/lib/mysql

и сделать резервную копию вашей базы данных (в виде папки)

, затем перейти в папку базы данных и попытаться удалить таблицуфайл

это может работать

...