Mam następujący plik migracji db\migrate\20100905201547_create_blocks.rb
Jak mogę w szczególności przywrócić ten plik migracji?
Mam następujący plik migracji db\migrate\20100905201547_create_blocks.rb
Jak mogę w szczególności przywrócić ten plik migracji?
Class.down
stackoverflow.com/questions/753919/run-a-single-migration-fileOdpowiedzi:
Jest to sposób, aby to zrobić, jeśli migracja, którą chcesz przywrócić, jest ostatnią zastosowaną. Możesz zastąpić 1 dowolną liczbą migracji, do których chcesz wrócić.
Na przykład:
Cofa również całą migrację, która nastąpiła później (4, 3, 2, a także 1).
Aby wycofać wszystkie migracje z powrotem do migracji docelowej (włącznie z nią), użyj: (To poprawione polecenie zostało dodane PO wszystkich komentarzach wskazujących błąd w oryginalnym poście)
Aby wycofać TYLKO JEDNĄ migrację specyficzną (POZA ZAMÓWIENIEM), użyj:
Zauważ, że NIE spowoduje to wycofania żadnych pośrednich migracji - tylko tej wymienionej na liście. Jeśli nie jest to zamierzone, możesz bezpiecznie uruchomić
rake db:migrate
i ponownie uruchomi tylko ten jeden, pomijając wszystkie inne, które nie zostały wcześniej wycofane.A jeśli kiedykolwiek chcesz migrować pojedynczą migrację poza kolejnością, istnieje również jej odwrotność
db:migrate:up
:źródło
STEP=-1
. Zrobiłem to raz i oszalało, wycofując wszystko. Niemiły! To był Rails 4.2 - myślę, że można go teraz naprawić.przywróci określony plik.
Aby znaleźć wersję wszystkich migracji, możesz użyć tego polecenia:
Lub po prostu przedrostek nazwy pliku migracji to wersja, którą musisz przywrócić.
Zobacz pozycję przewodnika Ruby on Rails dotyczącą migracji.
źródło
Aby cofnąć ostatnią migrację, możesz:
Jeśli chcesz przywrócić określoną migrację do wersji, wykonaj następujące czynności:
Na przykład jeśli wersja to 20141201122027, zrobisz:
wycofać tę konkretną migrację.
źródło
Możesz cofnąć migrację, używając
rake db:rollback
różnych opcji. Składnia będzie inna w zależności od wymagań.Jeśli chcesz cofnąć tylko ostatnią migrację, możesz użyć jednego z nich
lub
Jeśli chcesz cofnąć liczbę migracji naraz, wystarczy przekazać argument:
gdzie
n
jest liczba migracji do wycofania, licząc od ostatniej migracji.Jeśli chcesz przywrócić określoną migrację, powinieneś przekazać wersję migracji w następujący sposób:
gdzie xxxxx to numer wersji migracji.
źródło
rake db:migrate:down VERSION=your_migrations's_version_number_here
Wersja jest numerycznym prefiksem nazwy pliku migracji
Jak znaleźć wersję :
Twoje pliki migracji są przechowywane w twoim
rails_root/db/migrate
katalogu. Znajdź odpowiedni plik, do którego chcesz przywrócić, i skopiuj numer prefiksu.na przykład
nazwa pliku:
20140208031131_create_roles.rb
wtedy jest wersja20140208031131
źródło
rake db:migrate:status
Cofanie ostatniej migracji:
Cofanie ostatniej
n
liczby migracjiCofanie określonej migracji
źródło
Aby cofnąć ostatnią migrację, możesz:
Jeśli chcesz przywrócić określoną migrację do wersji, wykonaj następujące czynności:
Jeśli wywołany został plik migracji, który chcesz wycofać
db/migrate/20141201122027_create_some_table.rb
, to WERSJA dla tej migracji to20141201122027
znacznik czasu, w którym migracja została utworzona, a polecenie cofnięcia migracji to:źródło
Jeśli jest to migracja odwracalna i ostatnia, która została wykonana, uruchom
rake db:rollback
. I zawsze możesz użyć wersji. na przykładplik migracji to 20140716084539_create_customer_stats.rb, więc polecenie przywracania będzie:
rake db:migrate:down VERSION=20140716084539
źródło
Aby przywrócić wszystkie migracje do określonej wersji (np.
20181002222222
), Użyj:(Pamiętaj, że to używa
db:migrate
- niedb:migrate:down
tak jak w innych odpowiedziach na to pytanie).Zakładając, że określona wersja migracji jest starsza niż bieżąca wersja, spowoduje to wycofanie wszystkich migracji do określonej wersji, ale bez uwzględnienia.
Na przykład, jeśli
rake db:migrate:status
początkowo wyświetla się:Bieganie:
Spowoduje to:
Odniesienie: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
źródło
Z przewodnika po szynach
Cofanie poprzednich migracji
Możesz użyć funkcji Active Record do wycofania migracji przy użyciu
revert
metody:revert
Sposób przyjmuje również bloku instrukcji do odwrócenia. Może to być przydatne do przywrócenia wybranych części poprzednich migracji. Wyobraźmy sobie na przykład, że CreateBlock został popełniony, i później postanowiono, że do weryfikacji kodu pocztowego najlepiej będzie użyć walidacji Active Record, zamiast ograniczenia CHECK.Tę samą migrację można również napisać bez użycia przywracania, ale wymagałoby to jeszcze kilku kroków: odwrócenie kolejności tworzenia_tabeli i odwracania, zamiana create_table na drop_table, a na koniec zastąpienie w dół i odwrotnie. Wszystko zostało załatwione przez cofnięcie.
źródło
Migracje zmieniają stan bazy danych za pomocą polecenia
Możemy cofnąć pojedynczy krok migracji za pomocą
Aby wrócić do samego początku, możemy użyć
Jak można się domyślić, podstawienie dowolnej innej liczby na 0 powoduje migrację do tego numeru wersji, gdzie numery wersji pochodzą z listy migracji po kolei
źródło
Cóż, w Railsach 5 jest to dość łatwe rake db: migrate: status lub rails db: migrate: status
Został zmodyfikowany, aby obsługiwać oba w ten sam sposób. Następnie wybierz wersję, którą chcesz wycofać, a następnie uruchom rake db: migruj VERSION = 2013424230423
Upewnij się, że WERSJA składa się z wielkich liter
Jeśli masz problem z którymkolwiek etapem migracji lub utknąłeś na środku, po prostu przejdź do pliku migracji i skomentuj linie, które już zostały zmigrowane.
Mam nadzieję, że to pomaga
źródło
Jeśli chcesz przywrócić i przeprowadzić migrację, możesz uruchomić:
To to samo co:
źródło