Ich möchte eine Migrationsdatei entfernen / löschen. Wie würde ich das machen? Ich weiß, dass es hier ähnliche Fragen gibt, aber gibt es als Update einen besseren Weg als Script / Destroy?
Sollte ich auch eine db:reset
oder db:drop
eine Migration entfernen / löschen?
ruby-on-rails
ruby-on-rails-3
file-io
Alvincrespo
quelle
quelle
self.down
bei Ihrer Migration definierte Methode aufrufen, um Ihre Datenbank "herunterzustufen".rake db:migrate:status
wird Ihnen die ID der fehlenden Datei angezeigt, mit der Sie sie neu erstellen können. Sobald es zurück ist, können Sie den Ratschlägen dieser Antwort zum Sieg folgen.db:migrate:status
ist ein Lebensretter!Eine andere Möglichkeit, die Migration zu löschen:
Verwenden Sie es, bevor
rake db:migrate
es ausgeführt wird, da Änderungen in der Datenbank für immer bleiben :) - oder entfernen Sie Änderungen manuellquelle
Führen Sie die folgenden Befehle aus dem Home-Verzeichnis der App aus:
rake db:migrate:down VERSION="20140311142212"
(Hier ist die Version der Zeitstempel, den Rails beim Erstellen der Migration vorangestellt hat. Durch diese Aktion werden DB-Änderungen aufgrund dieser Migration zurückgesetzt.)Run "rails destroy migration migration_name"
(Der Migrationsname wird beim Erstellen der Migration ausgewählt. Entfernen Sie " timestamp_ " aus dem Namen Ihrer Migrationsdatei, um ihn abzurufen. )quelle
rails d migration migration_name
Sie können auch eine Downmigration wie folgt ausführen:
Weitere Informationen finden Sie im Ruby on Rails-Handbuch zu Migrationen.
quelle
Wir können benutzen,
Dadurch wird die Migration gelöscht.
quelle
Manchmal habe ich die Migrationsdatei und dann den entsprechenden Eintrag in der Tabelle schema_migrations aus der Datenbank gelöscht. Nicht schön, aber es funktioniert.
quelle
Dies funktioniert auch in Rails 5.
Wenn die Migration die letzte war, können Sie die Datenbankspalte (n) entfernen, die die Migration hinzugefügt hat, indem Sie Folgendes tun:
Entfernen Sie dann die Migrationsdatei selbst, indem Sie Folgendes ausführen:
quelle
Schauen Sie sich 4.1 Rollback an
http://guides.rubyonrails.org/migrations.html
$ rake db: Rollback
quelle
Keine dieser Antworten passte ganz zu dem Problem, das ich hatte, da die zu löschende Migration fehlte: Ich hatte eine Migration in einem anderen Zweig erstellt und ausgeführt, die dann verworfen wurde. Das Problem ist, wenn eine Migration ausgeführt wird, fügt Rails die Version einer
schema_migrations
Tabelle in der Datenbank hinzu. Selbst wenn es nicht in Ihrer Datenbankstruktur oder Ihrem Schema aufgeführt ist, sucht Rails danach. Sie können diese verwaisten Migrationen anzeigen, indem Sie Folgendes ausführen:rails db:migrate:status
Beachten Sie die Versionen der fehlenden Migrationen und gehen Sie in die Datenbankkonsole:
rails dbconsole
Entfernen Sie nun die Versionen manuell aus der Migrationstabelle:
delete from schema_migrations where version='<version>';
Du solltest jetzt gut sein.
quelle
Ich hatte gerade das gleiche Problem:
Das hat es für mich behoben
quelle
Randnotiz: Ab Schienen 5.0.0
rake
wurde inrails
So führen Sie Folgendes ausSchienen db: migriere VERSION = 0
quelle