rake db:migrate db:reset と db:schema:load の違い 質問する

rake db:migrate db:reset と db:schema:load の違い 質問する

rake db:migrateとの違いはrake db:reset私にはかなり明白です。私が理解できないのは、 がrake db:schema:load前の 2 つとどう違うのかということです。

私が同じ考えを持っていることを確認するために:

  • rake db:migrate- まだ実行されていない移行を実行します。
  • rake db:reset- データベースをクリアし (おそらくrake db:drop++rake db:createを実行rake db:migrate)、新しいデータベースで移行を実行します。

ベストアンサー1

  • db:migrate は、まだ実行されていない (単一の) 移行を実行します。

  • 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:migrate を使用します (これは、データベースに既にデータがある場合にのみ意味があります)。db:schema:load は、アプリの新しいインスタンスをセットアップするときに使用されます。


Rails 3.2.12の場合:

ソースを確認したところ、依存関係は次のようになりました。

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

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

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

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

  • db:migrate は、現在の環境のまだ実行されていない移行を実行します。

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

  • db:migrate:down は特定の移行をロールバックします

  • db:migrate:status は現在の移行ステータスを表示します

  • db:rollbackは最後の移行をロールバックします

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

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

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

  • db:schema:dump は現在の環境のスキーマをダンプします (また、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 の場合)

おすすめ記事