Ситуация schema_migration после удобного удаления из него - PullRequest
0 голосов
/ 10 января 2012

30 минут назад я пошел в MySQL и в базу данных, в которой использовал его в RoR.Затем я перешел на schema_migration и набрал

DELETE FROM schema_migration WHERE version=20120110152044;

После выполнения этой работы я набрал rake db:migrate и ожидаю, что миграция, которую я удалил несколько минут назад, будет снова добавлена ​​к schema_migration, ноЯ сталкиваюсь с этим сообщением:

"MySQL2 :: ERROR Таблица 'football_leagues' уже существует ...."

Может кто-нибудь сказать мне причину этого сообщения?

Ответы [ 2 ]

1 голос
/ 10 января 2012

Ваша миграция 20120110152044, вероятно, создает таблицу football_leagues с чем-то вроде:

create_table :football_leagues do |t|
    #...

в методе up или change. Удаление записи из таблицы schema_migrations не откатит миграцию, а только изменит запись о том, какие миграции были выполнены. Вам, вероятно, нужно вернуться в MySQL и вручную удалить таблицу football_leagues:

mysql> drop table football_leagues;

Если вам нужно сохранить football_leagues, вам придется изменить миграцию, чтобы не пытаться снова создать football_leagues.

Вы можете использовать rake db:rollback для отката миграции вместо попытки отредактировать schema_migrations вручную, редактирование schema_migrations должно выполняться только в том случае, если вы точно знаете, что делаете.

0 голосов
/ 10 января 2012

Я не хочу звучать покровительственно, но это потому, что вы пытаетесь создать таблицу с именем football_leagues, когда она уже существует.Запустите rake db:drop db:migrate, чтобы удалить таблицу (и любые другие таблицы в базе данных) и повторно запустить миграцию. Вы потеряете все свои данные в этой базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...