rake db:migrate は具体的に何をするのでしょうか? 質問する

rake db:migrate は具体的に何をするのでしょうか? 質問する

rake db:migrate は新しいマイグレーションを追加するだけですか、それともすべてのマイグレーション/変更を削除してすべてを新しく構築しますか?

rake がエラーをスローしているのは、移行 042 で削除された移行 040 のテーブル属性にアクセスしようとしているためだと思います。どういうわけか DB と rake が同期していないので、修正したいと思います。

専門家の皆さんへ - rake が移行と同期しなくなるのはよくあることでしょうか? これを回避するにはどうすればいいでしょうか (いいえ、スキーマや rake ファイルを手動で編集することはありません)。

ベストアンサー1

Rails の移行を使用すると、 というテーブルschema_migrationsが自動的に作成され、各移行のバージョン番号 (これは、ファイル名の移行名の前にある番号です。例: db/migrate/_20090617111204__migration.rb) を保存することで、適用された移行を追跡します。 を実行しrake db:migrateて migrate up すると、以前に実行されていない移行 (つまり、バージョンがテーブルに含まれていない移行) のみが実行されます (このため、 を実行しても、既に実行された移行を変更しても効果はありませんdb:migrate)。 migrate down を実行すると、 で見つかった、schema_migrationsロールバックするバージョンよりも大きいすべてのバージョンが元に戻されます。

おすすめ記事