Ich habe gerade einen DB-Dump geladen und nicht nur Tabellen erstellt und die Daten in diese Tabellen geladen, sondern auch viele Migrationen durchgeführt.Woher weiß Rails, dass eine Migration durchgeführt wurde?
Und nach dem Ausführen der verbleibenden Migrationen, running rake db:migrate:status
sagt mir, dass der Status jeder Migration ist UP
, aber die Migrationen haben nicht wirklich getan, was sie tun sollen.
Zum Beispiel habe ich eine Migration, die eine Tabelle namens notes
erstellt. Es wurde aktualisiert, und die Tabellen notes
existieren nicht. Also musste ich diese Migration redo
, aber den Code in self.down
Methode kommentieren.
Meine Frage ist: Wie kann eine Migration in UP
Status sein, obwohl die Tabelle, die es erstellt, wurde nicht in der Datenbank erstellt. Oder ich denke, die db-dumme, die ich zuvor geladen habe, hat schema_migrations
Tabelle so besiedelt, dass Rails überwiegende Migrationen in Betracht ziehen, aber tatsächlich nicht.
Jetzt brauche ich manuell zu rake db:migrate:redo VERSION=xxxxxxx
jede Migration, oder gibt es eine bessere Lösung?
Das ist wahr! Der Quellcode für diese Implementierung finden Sie hier https://github.com/rails/rails/blob/f47b4236e089b07cb683ee9b7ff8b06111a0ec10/activerecord/lib/active_record/railties/databases.rake#L91 – Pavan