Ich habe eine dev Ruby on Rails-Datenbank voller Daten. Ich möchte alles löschen und die Datenbank neu erstellen. Ich denke an die Verwendung von etwas wie:
rake db:recreate
Ist dies möglich?
Ich habe eine dev Ruby on Rails-Datenbank voller Daten. Ich möchte alles löschen und die Datenbank neu erstellen. Ich denke an die Verwendung von etwas wie:
rake db:recreate
Ist dies möglich?
Verwenden Sie wie
rake db:drop db:create db:migrate db:seed
Alles in einer Zeile. Dies ist schneller, da die Umgebung nicht immer wieder neu geladen werden muss.
db:drop - wird die Datenbank gelöscht.
db:erstellen - wird eine Datenbank erstellen (host/db/password wird aus config/database.yml übernommen)
db:migrieren - führt bestehende Migrationen aus dem Verzeichnis (db/migration/ .rb)*.
db:seed - werden die Seed-Daten aus dem Verzeichnis (db/migration/seed.rb) ..
Ich bevorzuge normalerweise:
rake db:reset
um alles auf einmal zu tun.
Zum Wohl!
Geben Sie einfach die Reihenfolge der Schritte an: Löschen Sie die Datenbank, legen Sie sie erneut an, migrieren Sie die Daten und säen Sie die Datenbank aus, wenn Sie Saatgut haben:
rake db:drop db:create db:migrate db:seed
Da die Standardumgebung für rake
es Entwicklung Wenn Sie die Ausnahme in den Spezifizierungstests sehen, sollten Sie die db für die Test Umgebung wie folgt:
RAILS_ENV=test rake db:drop db:create db:migrate
In den meisten Fällen wird die Testdatenbank während der Testverfahren gesät, so dass db:seed
Task-Aktion muss nicht übergeben werden. Andernfalls müssen Sie die Datenbank vorbereiten:
rake db:test:prepare
oder
RAILS_ENV=test rake db:seed
Darüber hinaus ist für die Verwendung der wiederherstellen. Aufgabe können Sie hinzufügen in Rakefile den folgenden Code:
namespace :db do
task :recreate => [ :drop, :create, :migrate ] do
if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
Rake::Task[ 'db:seed' ].invoke
end
end
end
Dann Ausgabe:
rake db:recreate
Das können Sie manuell tun:
rake db:drop
rake db:create
rake db:migrate
Oder einfach rake db:reset
, die die oben genannten Schritte ausführt, aber auch Ihre db/seeds.rb
Datei.
Eine zusätzliche Nuance ist, dass rake db:reset
lädt direkt von Ihrem schema.rb
Datei, anstatt alle Migrationsdateien erneut auszuführen.
Ihre Daten werden in jedem Fall weggepustet.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Ich würde vorschlagen, die am höchsten bewertete Antwort nicht zu berücksichtigen. Meiner Meinung nach
rake db:drop db:create db:schema:load
angemessener sein könnte alsrake db:drop db:create db:migrate
(obwohl ich bereit bin, mich da zu irren).0 Stimmen
Mögliches Duplikat von Zurücksetzen der Datenbank (alles löschen), dann eine Datenbank einrichten
2 Stimmen
rake db:drop db:create db:migrate
0 Stimmen
db:drop + db:create + db:migrate == db:migrate:reset
. Ich greife normalerweise aufdb:schema:load
wenn Migrationen unterbrochen werden. Ich muss die Datenbank nur selten neu erstellen, daher spielt die Geschwindigkeit keine große Rolle. Auch, wenn Sie nicht angewandte Migrationen haben,db:schema:load
ydb:reset
wird sie nicht anwenden. Ich bin mir nicht sicher, ob das ein gutes Argument ist.