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 の場合)