Ich habe die folgende Migrationsdatei db\migrate\20100905201547_create_blocks.rb
Wie kann ich diese Migrationsdatei spezifisch zurücksetzen?
ruby-on-rails
schema
database-schema
rollback
Ein Lehrling
quelle
quelle
Class.down
stackoverflow.com/questions/753919/run-a-single-migration-fileAntworten:
Dies ist eine Möglichkeit, wenn die Migration, die Sie zurücksetzen möchten, die zuletzt angewendete ist. Sie können 1 für beliebig viele Migrationen ersetzen, die Sie zurückgehen möchten.
Zum Beispiel:
Rollt auch die gesamte Migration zurück, die später stattgefunden hat (4, 3, 2 und auch 1).
Verwenden Sie Folgendes, um alle Migrationen auf eine Zielmigration zurückzusetzen (und diese einzuschließen): (Dieser korrigierte Befehl wurde NACH allen Kommentaren hinzugefügt, die auf den Fehler im ursprünglichen Beitrag hinweisen.)
Um NUR EINE bestimmte Migration (außer Betrieb) zurückzusetzen, verwenden Sie:
Beachten Sie, dass dadurch KEINE intervenierenden Migrationen zurückgesetzt werden - nur die aufgelistete. Wenn Sie dies nicht beabsichtigt haben, können Sie es sicher ausführen,
rake db:migrate
und es wird nur dieses erneut ausgeführt, wobei alle anderen übersprungen werden, die zuvor nicht zurückgesetzt wurden.Und wenn Sie jemals eine einzelne Migration außerhalb der Reihenfolge migrieren möchten, gibt es auch die Umkehrung
db:migrate:up
:quelle
STEP=-1
. Ich habe das einmal gemacht und es wurde verrückt und rollte alles zurück. Nicht nett! Dies war Rails 4.2 - ich denke, es kann jetzt behoben werden.rollt die spezifische Datei zurück.
Um die Version aller Migrationen zu finden, können Sie diesen Befehl verwenden:
Oder das Präfix des Dateinamens der Migration ist einfach die Version, die Sie zurücksetzen müssen.
Weitere Informationen zu Migrationen finden Sie im Ruby on Rails-Handbuch .
quelle
So rollen Sie die letzte Migration zurück:
Wenn Sie eine bestimmte Migration mit einer Version rückgängig machen möchten, sollten Sie Folgendes tun:
Wenn die Version beispielsweise 20141201122027 lautet, tun Sie Folgendes:
um diese spezifische Migration zurückzusetzen.
quelle
Sie können Ihre Migration
rake db:rollback
mit verschiedenen Optionen zurücksetzen. Die Syntax hängt von Ihren Anforderungen ab.Wenn Sie nur die letzte Migration zurücksetzen möchten, können Sie beide verwenden
oder
Wenn Sie die Anzahl der Migrationen gleichzeitig zurücksetzen möchten, übergeben Sie einfach ein Argument:
Wo
n
ist die Anzahl der Migrationen zum Rollback, gerechnet von der letzten Migration?Wenn Sie ein Rollback auf eine bestimmte Migration durchführen möchten, sollten Sie die Version der Migration wie folgt übergeben:
Dabei ist xxxxx die Versionsnummer der Migration.
quelle
rake db:migrate:down VERSION=your_migrations's_version_number_here
Die Version ist das numerische Präfix im Dateinamen der Migration
So finden Sie die Version :
Ihre Migrationsdateien werden in Ihrem
rails_root/db/migrate
Verzeichnis gespeichert . Suchen Sie die entsprechende Datei, bis zu der Sie ein Rollback durchführen möchten, und kopieren Sie die Präfixnummer.zum Beispiel
Dateiname:
20140208031131_create_roles.rb
dann ist die Version20140208031131
quelle
rake db:migrate:status
Zurücksetzen der letzten Migration:
Zurücksetzen der letzten
n
Anzahl von MigrationenZurücksetzen einer bestimmten Migration
quelle
So rollen Sie die letzte Migration zurück:
Wenn Sie eine bestimmte Migration mit einer Version rückgängig machen möchten, sollten Sie Folgendes tun:
Wenn die Migrationsdatei aufgerufen wurde
db/migrate/20141201122027_create_some_table.rb
, die Sie zurücksetzen möchten, lautet die VERSION für diese Migration. Dies20141201122027
ist der Zeitstempel, zu dem diese Migration erstellt wurde, und der Befehl zum Zurücksetzen dieser Migration lautet :quelle
Wenn es sich um eine reversible Migration handelt und die letzte, die ausgeführt wurde, führen Sie sie aus
rake db:rollback
. Und Sie können immer die Version verwenden. z.BDie Migrationsdatei lautet 20140716084539_create_customer_stats.rb. Der Rollback-Befehl lautet also:
rake db:migrate:down VERSION=20140716084539
quelle
Verwenden Sie Folgendes, um alle Migrationen auf eine bestimmte Version (z. B.
20181002222222
) zurückzusetzen:(Beachten Sie, dass dies verwendet
db:migrate
- nichtdb:migrate:down
wie in anderen Antworten auf diese Frage.)Angenommen, die angegebene Migrationsversion ist älter als die aktuelle Version, werden alle Migrationen bis zur angegebenen Version zurückgesetzt, jedoch nicht eingeschlossen.
Zum Beispiel, wenn
rake db:migrate:status
anfänglich angezeigt wird:Laufen:
Wird darin enden, dass:
Referenz: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
quelle
Aus dem Rails Guide
Zurücksetzen früherer Migrationen
Sie können die Fähigkeit von Active Record verwenden, Migrationen mithilfe der folgenden
revert
Methode zurückzusetzen:Die
revert
Methode akzeptiert auch einen Befehlsblock zum Umkehren. Dies kann nützlich sein, um ausgewählte Teile früherer Migrationen zurückzusetzen. Stellen Sie sich zum Beispiel vor, dass CreateBlock festgeschrieben ist und später entschieden wird, dass es am besten ist, Active Record-Validierungen anstelle der CHECK-Einschränkung zu verwenden, um die Postleitzahl zu überprüfen.Dieselbe Migration hätte auch ohne Verwendung von revert geschrieben werden können, dies hätte jedoch einige weitere Schritte erforderlich gemacht: Umkehren der Reihenfolge von create_table und reversible, Ersetzen von create_table durch drop_table und schließlich Ersetzen von up durch down und umgekehrt. Dies alles wird durch Zurücksetzen erledigt.
quelle
Migrationen ändern den Status der Datenbank mit dem Befehl
Wir können einen einzelnen Migrationsschritt mit rückgängig machen
Um den ganzen Weg zurück zum Anfang zu gehen, können wir verwenden
Wie Sie vielleicht erraten haben, wird das Ersetzen von 0 durch eine andere Nummer zu dieser Versionsnummer migriert, wobei die Versionsnummern aus der sequentiellen Auflistung der Migrationen stammen
quelle
Nun, in Rails 5 ist es ganz einfach. Rake db: migrate: status oder Rails db: migrate: status
Es wurde so geändert, dass beide gleich behandelt werden. Wählen Sie dann einfach die Version aus, die Sie zurücksetzen möchten, und führen Sie dann rake db aus: migrate VERSION = 2013424230423
Stellen Sie sicher, dass VERSION nur aus Großbuchstaben besteht
Wenn Sie ein Problem mit einem Schritt der Migration haben oder in der Mitte stecken bleiben, gehen Sie einfach zur Migrationsdatei und kommentieren Sie die bereits migrierten Zeilen aus.
Ich hoffe, das hilft
quelle
Wenn Sie ein Rollback durchführen und migrieren möchten, können Sie Folgendes ausführen:
Das ist das gleiche wie:
quelle