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.

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 .


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)


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.


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

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

Ü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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.