Wie kann man eine bestimmte Migration rückgängig machen?

Ich habe die folgende Migrationsdatei "db\migrate\20100905201547_create_blocks.rb

Wie kann ich diese Migrationsdatei gezielt zurücksetzen?

Lösung
rake db:rollback STEP=1

ist eine Möglichkeit, dies zu tun, wenn die Migration, die Sie rückgängig machen wollen, die letzte ist, die durchgeführt wurde. Sie können 1 für so viele Migrationen ersetzen, wie Sie zurückgehen möchten.

Zum Beispiel:

rake db:rollback STEP=5

Macht auch alle später erfolgten Migrationen rückgängig (4, 3, 2 und auch 1).

Um alle Migrationen bis zu (und einschließlich) einer Zielmigration rückgängig zu machen, verwenden Sie: (Dieser korrigierte Befehl wurde NACH all den Kommentaren hinzugefügt, die auf den Fehler im ursprünglichen Beitrag hingewiesen haben)

rake db:migrate VERSION=20100905201547

Um NUR EINE bestimmte Migration (AUSSER BETRIEBLICH) zurückzusetzen, verwenden Sie:

rake db:migrate:down VERSION=20100905201547

Beachten Sie, dass dies NICHT alle dazwischenliegenden Migrationen rückgängig macht - nur die eine, die aufgelistet ist. Wenn das nicht das ist, was Sie beabsichtigt haben, können Sie rake db:migrate ausführen und es wird nur diese eine Migration erneut ausgeführt und alle anderen, die vorher nicht zurückgerollt wurden, übersprungen.

Kommentare (7)
rake db:migrate:down VERSION=20100905201547

wird die betreffende Datei zurückgesetzt.


Um die Version aller Migrationen zu ermitteln, können Sie diesen Befehl verwenden:

rake db:migrate:status

Oder das Präfix des Dateinamens der Migration ist einfach die Version, die Sie zurücksetzen müssen.


Siehe den Eintrag im Ruby on Rails-Leitfaden zu Migrationen.

Kommentare (10)

Sie können Ihre Migration zurücksetzen, indem Sie rake db:rollback mit verschiedenen Optionen verwenden. Die Syntax ist je nach Ihren Anforderungen unterschiedlich.

Wenn Sie nur die letzte Migration rückgängig machen wollen, können Sie entweder

rake db:rollback

oder

rake db:rollback STEP=1

Wenn Sie mehrere Migrationen auf einmal rückgängig machen wollen, übergeben Sie einfach ein Argument:

rake db:rollback STEP=n

wobei n die Anzahl der zurückzusetzenden Migrationen ist, gezählt ab der letzten Migration.

Wenn Sie ein Rollback zu einer bestimmten Migration durchführen möchten, sollten Sie die Version der Migration im Folgenden angeben:

rake db:migrate:down VERSION=xxxxx

wobei xxxxx die Versionsnummer der Migration ist.

Kommentare (1)