2

Я запустил rake db:migrate, и все мои миграции выполнялись. Однако, когда я пытаюсь запустить rake db:test:prepare я получаю ошибку:Рельсы в ожидании миграции в rake db: test: подготовить

You have 1 pending migrations: 
    20130724211328 CreateGalleries 
Run `rake db:migrate` to update your database then try again. 

Затем выполняется rake db:migrate снова выдает ошибку:

PG::Error: ERROR: relation "galleries" already exists... 

Но в консоли можно создавать и манипулировать модели Gallery точно, как показано в миграции CreateGalleries. Таблица не создается или даже не упоминается ни в каких других миграциях.

Кажется, миграция прошла нормально, но не регистрировалась. Любые идеи, как это исправить?

EDIT

Я решил это с rake db:drop db:create db:migraterake db:test:prepare затем, но я счастлив, чтобы дать решение для тех, кто может пролить свет на то, что вызвало проблемы в первую очередь.

ответ

1

Я подозреваю, что миграция для галерей не была выполнена должным образом. Если вы на 100% уверены, что все правильно в вашей таблице, вы можете увеличить версию миграции до версии миграции галерей.

Чтобы сделать это, найти метку времени вашей галереи миграции (по 14 номеров в передней части вашего файла миграции, в данном случае 20130724211328) и вставить его в новую строку в таблицу schema_migrations (которая осуществляется автоматически с помощью Rails после успешно выполняет миграцию).

Если стол пуст, вы также можете удалить стол galleries и снова запустить rake db:migrate. Таким образом, вы также можете убедиться, что ваша миграция не вызывает никаких ошибок.

+0

Что было бы примером ненадлежащего исполнения? Модель отвечает точно, как я хочу в консоли. Существуют ли другие нефункциональные операции (например, отслеживание), которые могут выходить из строя, но при этом остаются неизменными? – tyler

+0

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

+0

Не отбросит ли миграция и отменяет изменения, если все это не работает? – tyler

 Смежные вопросы

  • Нет связанных вопросов^_^