Как откатиться всего на один шаг с помощью rake db: migrate

197

После добавления файлов миграции в db/migrateпапку и запуска rake db:migrate, я хочу вернуться к предыдущему шагу, я думаю, использование VERSION=nправильного способа сделать это, но я не знаю правильное значение n для использования. Есть ли команда для проверки текущего значения n?

Было бы замечательно, если бы кто-нибудь мог предоставить полные инструкции по использованию rake db:migrate.

Mko
источник

Ответы:

358

Для начинающих

rake db:rollback вернусь на шаг назад

затем

rake db:rollback STEP=n

Откатит вам nмиграции, где nуказано количество последних миграций, которые вы хотите откатить.

Больше ссылок здесь .

rwilliams
источник
95

Откатите последнюю миграцию:

rake db:rollback

Откатите nпоследние миграции:

rake db:rollback STEP=n

Полные инструкции по использованию задач миграции Rails для rake можно найти в Руководстве по Rails для запуска миграций .


Вот еще немного:

  • rake db:migrate - Запустите все миграции, которые еще не были выполнены
  • rake db:migrate VERSION=20080906120000 - Запустите все необходимые миграции (вверх или вниз), чтобы перейти к данной версии
  • rake db:migrate RAILS_ENV=test - Запустить миграцию в заданной среде.
  • rake db:migrate:redo - Откатить одну миграцию и запустить ее снова
  • rake db:migrate:redo STEP=n- Откатить последние nмиграции и запустить их снова
  • rake db:migrate:up VERSION=20080906120000- запустить upметод для данной миграции
  • rake db:migrate:down VERSION=20080906120000- запустить downметод для данной миграции

И чтобы ответить на ваш вопрос о том, откуда вы получаете номер версии миграции:

Версия - это числовой префикс в имени файла миграции. Например, для перехода на версию 20080906120000 запустите

$ rake db:migrate VERSION=20080906120000

(От запуска миграций в путеводителях по Rails)

Ajedi32
источник
2
Когда rake db: rollback не работал для отката последней миграции, мне пришлось использовать rake db: migrate VERSION = <вторая дата последней версии>, и она работала нормально
Omni
8

Лучший способ - запустить определенную миграцию снова, используя down или up (в rails 4. Это изменение)

rails db: migrate: up VERSION = отметка времени

Теперь, как вы получаете метку времени. Идти по этому пути

/ Дб / мигрирует

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

Hemali
источник
Хотя это не отвечает на вопрос, это действительно лучший способ. Откат по шагам может привести к ошибкам, особенно при работе с программным обеспечением в группе.
сталь
5

Если версия есть 20150616132425, то используйте:

rails db:migrate:down VERSION=20150616132425
Лон Нгха
источник
1

Другие люди уже ответили вам, как выполнить откат, но вы также спросили, как определить номер версии миграции.

  • rake db:migrate:status дает список вашей версии миграции, имени и статуса (вверх или вниз)
  • Вы также можете найти файл миграции, который содержит временную метку в имени файла, то есть номер версии. Миграции находятся в папке:/db/migrate
BjarneD
источник
Кстати, если вы запустите команду status, вы можете увидеть строки вроде: ********** NO FILE ********** Эти миграции не существуют в вашей текущей ветке, если вы используете мерзавец.
BjarneD