So rollen Sie mit rake db nur einen Schritt zurück: migrieren

196

Nachdem ich Migrationsdateien zum db/migrateOrdner hinzugefügt und ausgeführt habe rake db:migrate, möchte ich zum vorherigen Schritt zurückkehren. Ich denke, die Verwendung VERSION=nist der richtige Weg, aber ich kenne den richtigen Wert von n nicht. Gibt es einen Befehl zum Überprüfen des aktuellen n-Werts?

Es wäre großartig, wenn jemand vollständige Anweisungen zur Verwendung geben könnte rake db:migrate.

mko
quelle

Antworten:

354

Für Starter

rake db:rollback bringt dich einen Schritt zurück

dann

rake db:rollback STEP=n

Rollback Sie nMigrationen zurück, wo nist die Anzahl der letzten Migrationen, die Sie zurücksetzen möchten.

Weitere Referenzen hier .

rwilliams
quelle
95

Setzen Sie die letzte Migration zurück:

rake db:rollback

Führen Sie die nletzten Migrationen zurück:

rake db:rollback STEP=n

Ausführliche Anweisungen zur Verwendung von Rails-Migrationsaufgaben für Rake finden Sie im Rails-Handbuch zum Ausführen von Migrationen .


Hier noch etwas mehr:

  • rake db:migrate - Führen Sie alle Migrationen aus, die noch nicht ausgeführt wurden
  • rake db:migrate VERSION=20080906120000 - Führen Sie alle erforderlichen Migrationen (nach oben oder unten) aus, um zur angegebenen Version zu gelangen
  • rake db:migrate RAILS_ENV=test - Führen Sie Migrationen in der angegebenen Umgebung aus
  • rake db:migrate:redo - Setzen Sie eine Migration zurück und führen Sie sie erneut aus
  • rake db:migrate:redo STEP=n- Setzen Sie die letzten nMigrationen zurück und führen Sie sie erneut aus
  • rake db:migrate:up VERSION=20080906120000- Führen Sie die upMethode für die angegebene Migration aus
  • rake db:migrate:down VERSION=20080906120000- Führen Sie die downMethode für die angegebene Migration aus

Und um Ihre Frage zu beantworten, woher Sie die Versionsnummer einer Migration beziehen:

Die Version ist das numerische Präfix im Dateinamen der Migration. Um beispielsweise auf die Version 20080906120000 zu migrieren, führen Sie aus

$ rake db:migrate VERSION=20080906120000

(Aus Ausführen von Migrationen in den Rails-Handbüchern)

Ajedi32
quelle
2
Wenn Rake DB: Rollback nicht funktionierte, um die letzte Migration zurückzusetzen, musste ich Rake DB: Migrate VERSION = <Datum der vorletzten Version> verwenden und es funktionierte einwandfrei
Omni
8

Der beste Weg ist, eine bestimmte Migration erneut auszuführen, indem Sie nach unten oder oben (in Schienen 4) verwenden.

Schienen db: migrate: up VERSION = Zeitstempel

Nun, wie Sie den Zeitstempel erhalten. Geh auf diesen Weg

/ db / migrate

Identifizieren Sie die Migrationsdatei, die Sie zurücksetzen möchten. Wählen Sie den Zeitstempel aus diesem Dateinamen.

Hemali
quelle
Dies beantwortet zwar nicht die Frage, ist aber in der Tat der beste Weg. Das schrittweise Zurücksetzen kann zu Fehlern führen, insbesondere bei der Arbeit an Software in einer Gruppe.
Stahl
5

Wenn die Version ist 20150616132425, verwenden Sie:

rails db:migrate:down VERSION=20150616132425
Đoàn Nghĩa
quelle
1

Andere Personen haben Ihnen bereits geantwortet, wie Sie ein Rollback durchführen sollen, aber Sie haben auch gefragt, wie Sie die Versionsnummer einer Migration ermitteln können.

  • rake db:migrate:status gibt eine Liste Ihrer Migrationsversion, Ihres Namens und Ihres Status an (nach oben oder unten)
  • Sie können auch die Migrationsdatei finden, die einen Zeitstempel im Dateinamen enthält, dh die Versionsnummer. Migrationen befinden sich im Ordner:/db/migrate
BjarneD
quelle
Übrigens, wenn Sie den Statusbefehl ausführen, werden möglicherweise folgende Zeilen angezeigt: ********** NO FILE ********** Diese Migrationen sind in Ihrem aktuellen Zweig nicht vorhanden, wenn Sie sie verwenden git.
BjarneD