Chciałbym usunąć / skasować plik migracji. Jak bym to zrobił? Wiem, że są tutaj podobne pytania, ale czy jako aktualizacja jest lepszy sposób niż wykonanie skryptu / zniszczenia?
Czy powinienem również wykonać migrację db:reset
lub db:drop
usunąć / skasować migrację?
ruby-on-rails
ruby-on-rails-3
file-io
alvincrespo
źródło
źródło
self.down
metodę zdefiniowaną podczas migracji w celu „obniżenia” bazy danych.rake db:migrate:status
pokaże ci identyfikator brakującego pliku, którego możesz użyć do odtworzenia go. Gdy wróci, możesz postępować zgodnie z radą tej odpowiedzi, aby zwyciężyć.db:migrate:status
ratuje życie!Inny sposób usunięcia migracji:
Użyj go przed
rake db:migrate
wykonaniem, ponieważ zmiany w bazie danych pozostaną na zawsze :) - lub usuń zmiany ręcznieźródło
Uruchom poniższe polecenia z katalogu domowego aplikacji:
rake db:migrate:down VERSION="20140311142212"
(w tym przypadku wersja jest sygnaturą czasową dodawaną przez railsy podczas tworzenia migracji. Ta czynność spowoduje cofnięcie zmian bazy danych w wyniku migracji)Run "rails destroy migration migration_name"
(nazwa_migracji to ta, której użyliśmy podczas tworzenia migracji. Usuń „ timestamp_ ” z nazwy pliku migracji, aby ją uzyskać)źródło
rails d migration migration_name
Możesz również przeprowadzić migrację w dół, na przykład:
Więcej informacji znajdziesz w przewodniku Ruby on Rails dotyczącym migracji.
źródło
Możemy użyć,
Co spowoduje usunięcie migracji.
źródło
Czasami zdarzało się, że usuwałem plik migracji, a następnie usuwałem odpowiedni wpis w tabeli schema_migrations z bazy danych. Niezbyt ładne, ale działa.
źródło
Działa to również w Railsach 5.
Jeśli migracja była ostatnią, możesz usunąć kolumny bazy danych, które dodała migracja, wykonując następujące czynności:
następnie usuń sam plik migracji, uruchamiając:
źródło
Spójrz na 4.1 Wycofywanie
http://guides.rubyonrails.org/migrations.html
$ rake db: rollback
źródło
Żadna z tych odpowiedzi nie pasowała do problemu, który miałem, ponieważ brakowało migracji, którą chciałem usunąć: utworzyłem i uruchomiłem migrację w innej gałęzi, która została następnie odrzucona. Problem polega na tym, że po uruchomieniu migracji railsy dodają wersję do
schema_migrations
tabeli w bazie danych. Więc nawet jeśli nie ma tego na liście w twojej strukturze lub schemacie db, railsy go szukają. Możesz ujawnić te osierocone migracje, uruchamiając:rails db:migrate:status
Zanotuj wersje brakujących migracji i przejdź do konsoli db:
rails dbconsole
Teraz ręcznie usuń wersje z tabeli migracji:
delete from schema_migrations where version='<version>';
Teraz powinieneś być dobry.
źródło
Właśnie miałem ten sam problem:
To naprawiło to dla mnie
źródło
Uwaga boczna: Począwszy od rails 5.0.0
rake
został zmieniony narails
Więc wykonaj następujące czynnościrails db: migrate VERSION = 0
źródło