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


197

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

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

Ответы:


358

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

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

затем

rake db:rollback STEP=n

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

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


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)


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

8

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

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

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

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

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


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


1

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

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

Кстати, если вы запустите команду status, вы можете увидеть строки вроде: ********** NO FILE ********** Эти миграции не существуют в вашей текущей ветке, если вы используете мерзавец.
BjarneD
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.