Frage

Ist rake db: migrieren nur neue Migrationen hinzugefügt, oder alle Migrationen / Änderungen abfällt und alles neu bauen

Ich denke, Harke ist ein Fehler zu werfen, weil es 040 eine Tabelle Attribut in der Migration zuzugreifen versucht, die 042. irgendwie in der Migration gelöscht meine DB und Harke sind nicht synchron, und ich möchte sie beheben.

Sie Experten da draußen - ist es üblich, Harke mit Migrationen nicht mehr synchron zu bekommen? wie kann ich dies vermeiden (nein, ich nicht von Hand bearbeiten mein Schema oder Rake-Dateien).

War es hilfreich?

Lösung

Jedes Mal wenn Sie eine Migration erstellen mithilfe von Skripts (wie script / generieren Modell ...) eine neue Migration in das richtige Verzeichnis hinzugefügt wird, bereit, mit der realen Datenbank synchronisiert werden.

Eigentlich db Rake. Migrieren nur Kontrollen, die fehlende Migrationen müssen noch auf die Datenbank angewendet werden, ohne sich um die previouse diejenigen kümmern

Natürlich, wenn Sie die Datenbank mit Hilfe anderer Weise modifizieren, ist gemeinsam out-of-Synch Dinge zu erhalten, weil, wie Sie sagten, Sie finden sich eine Migration auf etwas anwenden, die unterhalb geändert wird.

Andere Tipps

Wenn Sie Schienen-Migrationen verwenden, wird eine Tabelle namens schema_migrations automatisch erstellt wird, die Spur hält, was Migrationen angewandt wurde, durch die Versionsnummer jeder Migration zu speichern (dies ist die Zahl, die die Migration Namen im Dateinamen vorangestellt, dh db / Migrate / _20090617111204__migration.rb). Wenn Sie rake db:migrate laufen nur Migrationen wandern nach oben, die vorher nicht laufen (dh. Ihre Version ist in der Tabelle nicht enthalten sind) werden (aus diesem Grund durchgeführt werden, eine Migration zu ändern, die worden ist bereits ausgeführt wird keine Auswirkungen haben, wenn db:migrate läuft ). Bei der Migration nach unten, alle in schema_migrations gefunden Versionen, die größer sind als die Version, die Sie rollen wieder rückgängig gemacht werden.

Eine Migration bedeutet, dass Sie von der aktuellen Version auf eine neuere Version zu bewegen (wie in der ersten Antwort gesagt wird). Mit rake db: wandern Sie neue Änderungen an Ihrem Schema anwenden können. Aber wenn Sie möchten, zu einer vorherigen Migration rückgängig zu machen Sie rake db verwenden können: Rollback Ihre neue Änderungen zunichte zu machen, wenn sie nicht richtig definiert sind. Achtung:. Durch, damit Ihre Daten zu tun, gehen verloren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top