Gibt es einen Rake-Befehl zum Löschen der Daten in den Datenbanktabellen?
Wie erstelle ich ein db: seed-Skript, um Daten in meine Tabellen vorab zu füllen?
ruby-on-rails
database
seeding
Blankman
quelle
quelle
Sie können alles löschen und Datenbank + Seeds mit beiden neu erstellen:
rake db:reset
: Lädt aus schema.rbrake db:drop db:create db:migrate db:seed
: Lasten von MigrationenStellen Sie sicher, dass Sie keine Verbindungen zu db (Rails Server, SQL Client ..) haben, da sonst die Datenbank nicht unterbrochen wird.
schema.rb ist eine Momentaufnahme des aktuellen Status Ihrer Datenbank, die generiert wurde von:
quelle
Wenn Sie nicht den gesamten Shebang löschen und neu erstellen möchten, nur um Ihre Daten neu zu laden, können Sie
MyModel.destroy_all
(oderdelete_all
) in der Datei seed.db verwenden, um eine Tabelle zu bereinigen, bevor IhreMyModel.create!(...)
Anweisungen die Daten laden. Dann können Sie dendb:seed
Vorgang immer wieder wiederholen . (Dies betrifft natürlich nur die Tabellen, in die Sie Daten geladen haben, nicht den Rest.)Unter https://stackoverflow.com/a/14957893/4553442 gibt es einen "Dirty Hack" , um eine "De-Seeding" -Operation hinzuzufügen, die der Migration nach oben und unten ähnelt ...
quelle
Ab Rails 5 wurde das
rake
Befehlszeilentoolrails
jetzt als Alias ausgeführtrails db:reset
anstattrake db:reset
wird genauso gut funktionieren
quelle
Sie können verwenden,
rake db:reset
wenn Sie die lokale Datenbank löschen und mit den von neu geladenen Daten neu beginnen möchtendb/seeds.rb
. Dies ist ein nützlicher Befehl, wenn Sie Ihr Schema noch herausfinden und häufig Felder zu vorhandenen Modellen hinzufügen müssen.Sobald der Befehl zum Zurücksetzen verwendet wird, wird Folgendes ausgeführt: Löschen der Datenbank:
rake db:drop
Laden des Schemas:rake db:schema:load
Setzen Sie die Daten:rake db:seed
Wenn Sie Ihre Datenbank jedoch vollständig löschen möchten, können Sie sie verwenden
rake db:drop
. Durch das Löschen der Datenbank werden auch Schemakonflikte oder fehlerhafte Daten entfernt. Wenn Sie die vorhandenen Daten behalten möchten, müssen Sie sie sichern, bevor Sie diesen Befehl ausführen.Dies ist ein ausführlicher Artikel über die wichtigsten Rake-Datenbankbefehle .
quelle