1. ホーム
  2. ruby-on-rails

[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて

2022-03-15 06:47:38

質問

との違いは何ですか? rake db:migraterake db:reset は、私にはかなり明確です。私が理解していないのは、どのようにして rake db:schema:load は前者2つと異なる。

念のため、同じページで確認します。

  • rake db:migrate - まだ実行されていないマイグレーションを実行します。
  • rake db:reset - データベースをクリアする(おそらくは rake db:drop + rake db:create + rake db:migrate ) を作成し、新しいデータベースでマイグレーションを実行します。

解決方法は?

  • db:マイグレート は、まだ実行されていない(単一の)マイグレーションを実行します。

  • db:create データベースを作成します。

  • db:drop データベースを削除します。

  • db:schema:load は、schema.rb に従って、既存のデータベース内にテーブルとカラムを作成します。このとき、既存のデータは削除されます。

  • db:setup db:create、db:schema:load、db:seedを行う。

  • db:reset db:drop、db:setupを行う。

  • db:migrate:reset(マイグレート・リセット db:drop、db:create、db:migrateを行う。

db:schema:loadは、アプリの新しいインスタンスをセットアップするときに使用します。

お役に立てれば幸いです。


rails 3.2.12用にUPDATEしました。

今、ソースを確認したところ、依存関係はこのようになっています。

  • db:create 現在の環境用のデータベースを作成します。

  • db:create:all すべての環境に対してデータベースを作成します。

  • db:drop 現在の環境用のデータベースを削除します。

  • db:drop:all すべての環境に対してデータベースを削除します。

  • db:migrate 現在の env でまだ実行されていないマイグレーションを実行します。

  • db:migrate:up 特定のマイグレーションを実行します。

  • db:migrate:down(マイグレート・ダウン 特定のマイグレーションを1つだけロールバックする

  • db:migrate:ステータス 現在のマイグレーションステータスを表示します。

  • db:rollback 最後のマイグレーションをロールバックします

  • db:forward 現在のスキーマのバージョンを次のバージョンに進めます。

  • db:seed (のみ)db/seed.rb ファイルを実行します。

  • db:schema:load スキーマを現在のenvのデータベースにロードします。

  • db:schema:dump 現在の env のスキーマをダンプします (同様に db も作成するようです)。

  • db:setup 実行 db:create db:schema:load db:seed

  • db:reset db:drop db:setupを実行します。

  • db:migrate:redo(マイグレート:やり直し 指定されたマイグレーションに応じて、(db:migrate:down db:migrate:up) または (db:rollback db:migrate) を実行します。

  • db:migrate:reset(マイグレート・リセット 実行 db:drop db:create db:migrate

詳細については、以下を参照してください。 https://github.com/rails/rails/blob/v3.2.12/activerecord/lib/active_record/railties/databases.rake (Rails 3.2.x用)および https://github.com/rails/rails/blob/v4.0.5/activerecord/lib/active_record/railties/databases.rake (Rails 4.0.xの場合)