In Rails, manchmal bekommen wir den FehlerWoher weiß Rails, dass Migrationen ausstehen?
ActiveRecord::PendingMigrationError
Wie Rails wissen Migrationen anhängig sind?
Wo wird diese Flagge/Information gespeichert?
In Rails, manchmal bekommen wir den FehlerWoher weiß Rails, dass Migrationen ausstehen?
ActiveRecord::PendingMigrationError
Wie Rails wissen Migrationen anhängig sind?
Wo wird diese Flagge/Information gespeichert?
Wenn das Modell oder die Migration erstellt wird, wird dem Dateinamen ein Zeitstempel hinzugefügt.
20160727050119_create_user.rb
#time-stamp 20160727050119
Dann Verfahren call(env)
, die der letzten Migration Tempel abzurufen.
`mtime = ActiveRecord::Migrator.last_migration.mtime.to_i`
und vergleichen Sie es mit @last_check
und wenn es weniger als mtime
check_pending!
genannt wird und ActiveRecord::PendingMigrationError
gezeigt.
ActiveRecord::Migration.check_pending!(connection)
check_pending!
def check_pending!(connection = Base.connection)
raise ActiveRecord::PendingMigrationError if ActiveRecord::Migrator.needs_migration?(connection)
end
können Sie all diese Informationen finden .../lib/active-record/migration.rb
Nützliche Informationen und erläutert ein Problem, das ich hatte: Wenn Sie Ihre schema.rb-Datei festschreiben und nicht die Version festschreiben Parameter zu 'ActiveRecord :: Schema.define' am Anfang der Datei zusammen mit Ihren anderen Änderungen, kann es andere (in meinem Fall das CI-System) veranlassen, den ausstehenden Migrationsfehler zu erhalten, wenn sie versuchen, die Tests auszuführen, weil der Die Schemaversion ist kleiner als der Zeitstempel der letzten Migration. – Leo
Es gibt eine Tabelle in der Datenbank Ihrer Anwendung schema_migrations genannt, die eine einzelne Spalte namens Versionen hat. Für jede durchgeführte Migration wird eine Zeile angezeigt. Wenn auf der CD eine Migrationsdatei vorhanden ist, deren Zeitstempel nicht in der Tabelle schema_migrations enthalten ist, weiß Rails, dass Migrationen ausgeführt werden müssen.
Überprüfen Sie Ihre Datenbank, gibt es eine Tabelle 'schema_migrations'. Siehe [die Dokumente] (http://api.rubyonrails.org/classes/ActiveRecord/Migration.html) und [verwandte Frage] (http://stackoverflow.com/questions/12057408/how-does-rails-keep- Track-of-which-migrations-run-for-a-database? rq = 1) –