Як відкатати лише один крок за допомогою 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 для граблів у Посібнику 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

(Від запуску міграції в рейках)


2
Коли rake db: rollback не працював для відкату останньої міграції, мені довелося використовувати rake db: migrate VERSION = <друга дата останньої версії>, і вона спрацювала нормально
Omni

8

Найкращий спосіб - повторна міграція за допомогою вниз або вгору (в рейках 4. Це зміна)

rails db: migrate: up VERSION = часова марка

Тепер, як ви отримаєте позначку часу. Ідіть цією стежкою

/ db / мігрувати

Визначте файл міграції, який потрібно відновити. Виберіть часову позначку з цього імені.


Хоча це не відповідає на питання, це дійсно найкращий спосіб. Відкат за кроками може призвести до помилок, особливо при роботі над програмним забезпеченням у групі.
сталь

5

Якщо версія є 20150616132425, то використовуйте:

rails db:migrate:down VERSION=20150616132425

1

Інші люди вже відповіли вам, як відкати, але ви також запитали, як можна визначити номер версії міграції.

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

До речі, якщо ви запускаєте команду статусу, ви можете побачити рядки на зразок: ********** NO FILE ********** Ці міграції не існують у вашій поточній гілці, якщо ви використовуєте git
BjarneD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.