638 Stimmen

Eine Ruby on Rails-Datenbank löschen oder neu erstellen

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?

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 als rake db:drop db:create db:migrate (obwohl ich bereit bin, mich da zu irren).

0 Stimmen

2 Stimmen

rake db:drop db:create db:migrate

6voto

user1358180 Punkte 331

Sie können die folgende Befehlszeile verwenden:

rake db:drop db:create db:migrate db:seed db:test:clone

4voto

Kush Punkte 859

Um eine bestimmte Datenbank zu löschen, können Sie dies in der Rails-Konsole tun:

$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit

Und dann die DB erneut migrieren

$bundle exec rake db:migrate

4voto

Yana Agun Siswanto Punkte 1790

Auf Rails 4.2, um alle Daten zu entfernen, aber die Datenbank zu erhalten

$ bin/rake db:purge && bin/rake db:schema:load

https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md

0 Stimmen

Na ja... Ich habe es gerade ausprobiert, aber die Tabellen und Spalten bleiben nicht erhalten. Sie müssen eine db:migrate nach einer db:purge ausführen. Dadurch werden also keine Tabellen und Spalten erhalten. Die Datenbank selbst bleibt jedoch erhalten, so dass Sie nicht db:create ausführen müssen.

1 Stimmen

@Cedric Sie haben recht, db:purge erhält die Tabelle nicht. Ich habe den Code aktualisiert.

4voto

urko Punkte 21

3 Optionen, gleiches Ergebnis:

1. Alle Schritte:

  $ rake db:drop           # deletes the database for the current env
  $ rake db:create         # creates the database for the current env
  $ rake db:schema:load    # loads the schema already generated from schema.rb / erases data
  $ rake db:seed           # seed with initial data

2. Zurücksetzen:

  $ rake db:reset          # drop / schema:load / seed

3. Migrieren:zurücksetzen:

  $ rake db:migrate:reset  # drop / create / migrate
  $ rake db:seed

Anmerkungen:

  • Die Verwendung von schema:load ist schneller als die Durchführung aller Migrationen, führt aber zum gleichen Ergebnis.
  • Alle Daten gehen verloren.
  • Sie können mehrere Schwader in einer Linie einsetzen.
  • Arbeitet mit Schienen 3.

3voto

Aleksandr Babak Punkte 61

Sie können verwenden db:reset - für die Ausführung von db:drop und db:setup oder db:migrate:reset - der db:drop, db:create und db:migrate ausführt.

abhängig von der zu verwendenden Datei exist schema.rb

CodeJaeger.com

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.

Powered by:

X