Setzen Sie die Datenbank zurück (löschen Sie alle) und erstellen Sie eine Datenbank

159

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?

Blankman
quelle

Antworten:

160

Sie können alles löschen und Datenbank + Seeds mit beiden neu erstellen:

  1. rake db:reset: Lädt aus schema.rb
  2. rake db:drop db:create db:migrate db:seed: Lasten von Migrationen

Stellen 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:

rake db:schema:dump
laffuste
quelle
Vielen Dank, dass Sie die Benutzer daran erinnert haben, alle Server auszuschalten, um sicherzustellen, dass die Datenbank ordnungsgemäß gelöscht wird.
Erdferkel
6

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(oder delete_all) in der Datei seed.db verwenden, um eine Tabelle zu bereinigen, bevor Ihre MyModel.create!(...)Anweisungen die Daten laden. Dann können Sie den db:seedVorgang 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 ...

Tom Hundt
quelle
klug, alles von Grund auf neu zu erstellen, dauerte jedes Mal zu lange für mich
m02ph3u5
5

Ab Rails 5 wurde das rakeBefehlszeilentool railsjetzt als Alias ​​ausgeführt

rails db:reset anstatt rake db:reset

wird genauso gut funktionieren

DazBaldwin
quelle
0

Sie können verwenden, rake db:resetwenn 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 .

Nesha Zoric
quelle