it-swarm.com.de

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

Gibt es einen Rake-Befehl, um die Daten in den Datenbanktabellen zu löschen?

Wie erstelle ich ein db: seed-Skript, um Daten in meine Tabellen einzufügen?

151
Blankman

Ich verwende rake db:reset, der die Datenbank löscht und dann neu erstellt und Ihre seeds.rb-Datei enthält . http://guides.rubyonrails.org/migrations.html#resetting-the-database

270
JackCA

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

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

Stellen Sie sicher, dass Sie keine Verbindungen zu db haben (Rails-Server, SQL-Client ..). Andernfalls wird die Datenbank nicht gelöscht.

schema.rb ist eine Momentaufnahme des aktuellen Status Ihrer Datenbank, generiert von:

rake db:schema:dump
156
laffuste

Wenn Sie nicht das gesamte 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 löschen, bevor Ihre MyModel.create!(...)-Anweisungen die Daten laden. Dann können Sie die db:seed-Operation immer wieder wiederholen. (Dies wirkt sich natürlich nur auf die Tabellen aus, in die Sie Daten geladen haben, nicht auf die übrigen.)

Es gibt einen "schmutzigen Hack" unter https://stackoverflow.com/a/14957893/4553442 , um eine "De-Seeding" -Operation hinzuzufügen, die der Migration nach oben und unten ähnelt.

6
Tom Hundt

Ab Rails 5 wurde das Befehlszeilentool rake als Rails als Alias ​​bezeichnet

Rails db:reset statt rake db:reset

wird genauso gut funktionieren

3
DazBaldwin

Sie können rake db:reset verwenden, wenn Sie die lokale Datenbank löschen und mit Daten beginnen möchten, die aus db/seeds.rb geladen wurden. Dies ist ein nützlicher Befehl, wenn Sie noch immer Ihr Schema herausfinden und häufig vorhandenen Modellen Felder hinzufügen müssen.

Sobald der Befehl zum Zurücksetzen verwendet wird, führt er Folgendes aus: Die Datenbank löschen: rake db:drop Laden Sie das Schema: rake db:schema:load Übernehmen Sie die Daten: rake db:seed

Wenn Sie Ihre Datenbank jedoch vollständig löschen möchten, können Sie rake db:drop verwenden. Durch das Löschen der Datenbank werden auch Schemakonflikte oder fehlerhafte Daten entfernt. Wenn Sie Ihre Daten behalten möchten, müssen Sie sie sichern, bevor Sie diesen Befehl ausführen.

Dies ist ein ausführlicher Artikel zu den wichtigsten rake Datenbankbefehlen

0
Nesha Zoric