2010-12-04 10 views
150

Nach dem Hinzufügen von Migrationsdateien im Ordner db/migrate und Ausführen rake db:migrate, ich möchte zurück zum vorherigen Schritt, denke ich mit VERSION=n ist der richtige Weg, das zu tun, aber ich don kenne den richtigen Wert von n nicht. Gibt es einen Befehl, um den aktuellen n-Wert zu überprüfen?Wie Rollback nur einen Schritt mit Rake db: migrieren

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

Antwort

279

Für den Anfang

rake db:rollback werden Sie einen Schritt

dann

rake db:rollback STEP=n

Werden Sie n Migrationen wieder rückgängig zu machen, wo n die Anzahl der bisherigen Migrationen ist, dass Sie ein Rollback möchten.

Weitere Referenzen here.

71

Rollback die jüngste Migration:

rake db:rollback 

Rollback die n jüngsten Migrationen:

rake db:rollback STEP=n 

Sie eine vollständige Anleitung zur Rails Guide for running migrations über die Verwendung von Rails Migrationsaufgaben für Rake finden .


Hier einige mehr:

  • rake db:migrate - alle Migrationen ausführen, die bereits nicht
  • rake db:migrate VERSION=20080906120000 ausgeführt haben - Führen Sie alle notwendigen Migrationen (nach oben oder unten) auf die angegebene Version zu erhalten
  • rake db:migrate RAILS_ENV=test - Run-Migrationen in der gegebenen Umgebung
  • rake db:migrate:redo - Roll eine Migration zurück und starten sie es erneut
  • rake db:migrate:redo STEP=n - Rollen Sie den letzten n Migrationen zurück und führen sie wieder
  • rake db:migrate:up VERSION=20080906120000 - Führen Sie die up Methode für die gegebene Migration
  • rake db:migrate:down VERSION=20080906120000 - Führen Sie die down Methode für die gegebene Migration

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

Die Version ist das numerische Präfix des Dateinamens der Migration.Für Beispiel durch die Verwendung oder bis zur Version 20080906120000 laufen

$ rake db:migrate VERSION=20080906120000 

(Von Running Migrations in den Rails Guides)

+2

Wenn rake db: Rollbacks nicht funktionierte die letzte Migration rückgängig zu machen, hatte ich rake db zu verwenden: Migration VERSION = und es funktionierte gut – Omni

7

Der beste Weg läuft Besondere Migration wieder zu wandern (in Schienen 4. Es ist Veränderung)

Schienen db: migrieren: up VERSION = Zeitstempel

Jetzt erhalten Sie den Zeitstempel. diesen Weg gehen

/db/migrieren

Migrationsdatei Identifizieren Sie den Zeitstempel von dem Dateinamen revert.pick möchten.

+0

Während Das beantwortet die Frage nicht, es ist in der Tat der beste Weg. Das Zurücksetzen von Schritten kann zu Fehlern führen, insbesondere bei der Arbeit mit Software in einer Gruppe. – steel

1

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

  • rake db:migrate:status gibt eine Liste Ihrer Migrationen Version, Name und Status (nach oben oder unten)
  • Sie können auch die Migrationsdatei finden, die einen Zeitstempel im Dateinamen enthalten, dass die Versionsnummer ist. Migrationen werden in Ordner: /db/migrate
+0

Übrigens, wenn Sie den Befehl status ausführen, sehen Sie möglicherweise Zeilen wie: ********** NO FILE ********** Diese Migrationen ist nicht auf Ihrem aktuellen Zweig vorhanden wenn du git benutzt. –

Verwandte Themen