Aufgrund einiger Bereitstellungsprobleme habe ich die Verfolgung von schema.rb in git eingestellt. Irgendwie habe ich das vollgestopft und irgendwo auf dem Weg ist meine schema.rb-Datei verschwunden.
Gibt es eine Möglichkeit, schema.rb aus der Datenbank oder aus den Migrationen neu zu generieren? Ich würde es vorziehen, die vorhandenen Daten nicht zu verlieren.
rake db:schema:dump
auf Schienen 2.0Vorsichtig,
speichert das aktuelle DB-Schema aus der DB . Dies bedeutet, dass Änderungen an Ihren Migrationen NICHT in der Datei schema.rb wiedergegeben werden, die IMO nicht entspricht.
Wenn Sie das Schema aus den Migrationen neu erstellen möchten, gehen Sie wie folgt vor:
quelle
rake db:schema:dump
Befehl auszuführen .Ich denke, dass dies in Rails 3 noch gültig ist - es regeneriert die schema.rb aus der Datenbank.
quelle
SCHIENEN 5 Wege:
oder wenn Sie auf Gem :: LoadError stoßen, dann:
Hinweis:
In Rails 5 wird empfohlen, dass die Task generiert / ausgeführt wird, indem
rails
statt verwendetrake
wird. Dies ist nur zu beachten, dass die von Rails generierten Tasks die Erweiterung haben,.rake
siehe inlib/tasks/myTask.rake
. Dies bedeutet, dass diese Aufgabe auch durch Voranstellen ausgeführt werden kannrake
.quelle
Wenn Sie sich
schema.rb
lokal regenerieren , sollte es Ihnen gut gehen. Es enthält lediglich eine Darstellung der Struktur Ihrer Datenbanktabellen. Die Daten selbst sind in dieser Datei nicht enthalten.schema.rb
Führen Sie Folgendes aus, um Ihre Datei neu zu generieren:Dann legen
schema.rb
Sie einfach die neue Datei fest und Sie sollten in guter Verfassung sein!quelle
Direkt aus der Datei schema.rb selbst:
Machen Sie also NICHT den Vorschlag von
rake db:migrate
, der in der - zum Zeitpunkt dieses Schreibens - am niedrigsten bewerteten Antwort vorgeschlagen wurde.quelle
Ich hatte auch ein ähnliches Problem, bei dem mein altes Schema nicht aktualisiert wurde, selbst wenn ich die Migration gelöscht habe.
Also habe ich alle vorhandenen Tabellen in der Datenbank gelöscht und erneut migriert. Wenn ich dann den Befehl "db: schema: load" ausführte, erhielt ich eine neue schema.rb.
quelle