Jak cofnąć tylko jeden krok za pomocą rake db: migracja

197

Po dodaniu plików migracji do db/migratefolderu i uruchomieniu rake db:migratechcę wrócić do poprzedniego kroku, myślę, że użycie VERSION=njest właściwym sposobem, aby to zrobić, ale nie znam poprawnej wartości n do użycia. Czy istnieje polecenie sprawdzające bieżącą wartość n?

Byłoby wspaniale, gdyby ktokolwiek mógł dostarczyć pełne instrukcje dotyczące korzystania rake db:migrate.

mko
źródło

Odpowiedzi:

357

Dla początkujących

rake db:rollback cofnie cię o jeden krok

następnie

rake db:rollback STEP=n

Cofnie nmigracje gdzien jest liczba ostatnich migracji, które chcesz wycofać.

Więcej referencji tutaj .

rwilliams
źródło
95

Cofnij ostatnią migrację:

rake db:rollback

Cofnij nnajnowsze migracje:

rake db:rollback STEP=n

Pełne instrukcje dotyczące korzystania z zadań migracji Rails dla prowizji w Rake Guide można znaleźć w Przewodniku Rails dotyczącym uruchamiania migracji .


Oto kilka innych:

  • rake db:migrate - Uruchom wszystkie migracje, które nie zostały jeszcze uruchomione
  • rake db:migrate VERSION=20080906120000 - Uruchom wszystkie niezbędne migracje (w górę lub w dół), aby przejść do danej wersji
  • rake db:migrate RAILS_ENV=test - Uruchom migracje w danym środowisku
  • rake db:migrate:redo - Wycofaj jedną migrację i uruchom ją ponownie
  • rake db:migrate:redo STEP=n- Cofnij ostatnie nmigracje i uruchom je ponownie
  • rake db:migrate:up VERSION=20080906120000- Uruchom upmetodę dla danej migracji
  • rake db:migrate:down VERSION=20080906120000- Uruchom downmetodę dla danej migracji

Aby odpowiedzieć na pytanie o to, skąd masz numer wersji migracji:

Wersja jest prefiksem numerycznym w nazwie pliku migracji. Na przykład, aby przeprowadzić migrację do wersji 20080906120000, uruchom

$ rake db:migrate VERSION=20080906120000

(Od uruchamiania migracji w przewodnikach po szynach)

Ajedi32
źródło
2
Gdy rake db: rollback nie działał, aby cofnąć ostatnią migrację, musiałem użyć rake db: migracja VERSION = <druga data ostatniej wersji> i działało dobrze
Omni
8

Najlepszym sposobem jest ponowne uruchomienie Szczególnej migracji za pomocą przycisku w dół lub w górę (w szynach 4. To zmiana)

rails db: migrate: up VERSION = znacznik czasu

Teraz, jak uzyskać znacznik czasu. Idź do tej ścieżki

/ db / migrate

Zidentyfikuj plik migracji, który chcesz przywrócić. Wybierz znacznik czasu z tej nazwy pliku.

Hemali
źródło
Chociaż to nie odpowiada na pytanie, jest to rzeczywiście najlepszy sposób. Cofanie się krok po kroku może powodować błędy, szczególnie podczas pracy nad oprogramowaniem w grupie.
stal
5

Jeśli wersja jest 20150616132425, użyj:

rails db:migrate:down VERSION=20150616132425
Noàn Nghĩa
źródło
1

Inne osoby już odpowiedziały na temat wycofania, ale zapytałeś także, jak możesz zidentyfikować numer wersji migracji.

  • rake db:migrate:status podaje listę wersji migracji, nazwy i statusu (w górę lub w dół)
  • Możesz także znaleźć plik migracji, który zawiera znacznik czasu w nazwie pliku, czyli numer wersji. Migracje znajdują się w folderze:/db/migrate
BjarneD
źródło
Nawiasem mówiąc, jeśli uruchomisz polecenie statusu, możesz zobaczyć wiersze takie jak: ********** NO FILE ********** Te migracje nie istnieją w bieżącym oddziale, jeśli używasz git.
BjarneD,