データベースをリセット(すべてをパージ)してから、データベースをシードする


159

データベーステーブルのデータを一掃するためのrakeコマンドはありますか?

テーブルにデータを事前入力するdb:seedスクリプトを作成するにはどうすればよいですか?

回答:



160

すべてを削除して、データベースとシードを両方で再作成できます。

  1. rake db:reset:schema.rbからロード
  2. rake db:drop db:create db:migrate db:seed:マイグレーションからのロード

db(rails server、sql client ..)への接続がないことを確認してください。そうしないと、dbはドロップしません。

schema.rbは、以下によって生成されるデータベースの現在の状態のスナップショットです。

rake db:schema:dump

DBが適切に削除されるように、サーバーをオフにするようユーザーに通知していただきありがとうございます
aardvarkk 2017年

6

データをリロードするためだけにシバン全体を削除して再作成したくない場合は、seed.dbファイルでMyModel.destroy_all(またはdelete_all)を使用して、MyModel.create!(...)ステートメントがデータをロードする前にテーブルをクリーンアップできます。その後、db:seed操作を何度もやり直すことができます。(明らかに、これはデータをロードしたテーブルにのみ影響し、残りのテーブルには影響しません。)

https://stackoverflow.com/a/14957893/4553442に「ダーティーハック」があり、上下に移行するのと同様の「シード解除」操作を追加しています...


賢い、すべてをゼロから再作成する
たび

5

Rails 5の時点で、rakeコマンドラインツールにエイリアスが追加されましrails

rails db:reset の代わりに rake db:reset

同様に動作します


0

rake db:resetローカルデータベースを削除し、ロードされたデータで新たに開始する場合に使用できますdb/seeds.rbた。これは、まだスキーマを理解していて、既存のモデルにフィールドを追加する必要がある場合に便利なコマンドです。

リセットコマンドを使用すると、次のことが行われます。データベースrake db:drop の削除:スキーマの読み込み:rake db:schema:load データのシード:rake db:seed

ただし、データベースを完全に削除する場合は、を使用できますrake db:drop。データベースを削除すると、スキーマの競合や不良データも削除されます。持っているデータを保持したい場合は、このコマンドを実行する前に必ずバックアップしてください。

これは、最も重要なrakeデータベースコマンドに関する詳細な記事です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.