質問: db:resetをすべてのマイグレーションと異なるのはなぜですか? Ruby on Railsガイドのセクション Railsデータベースの移行には、次のような行があります > db:resetタスクはデータベースを削除し、再作成して現在のデータをロードします > スキーマを作成します。これはすべての移行を実行するのと同じではありません。 > > 誰が正確に彼らが異なっているのか、なぜマイグレーション履歴を再生するのがエラーが起こりやすいのか教えていただけますか? Ruby on Railsについてはかなり新しいです。前もって感謝します。
回答: `rake db:reset` を実行すると、データベースの構造が `schema.db` から再構築され、基本的には移行されたデータベース構造のキャッシュバージョンとして機能します。一方、すべてのマイグレーションを実行すると、マイグレーションが1つずつ適用されます。データベースの変更(たとえば、追加されたカウンター・キャッシュ列の事前入力)に対応する任意のコードが含まれます。 移行履歴を再現するのは、データベースの構造とデータの両方に変更が加えられているため、エラーが発生しやすくなります。開発者が気をつけていない場合、新鮮な環境(例えば、マイグレーションは古いバージョンのモデルを前提としている)にきれいに適用されないことがあります。一方、移行した後に移行を編集すると、 `schema.db` が同期しなくなる可能性があります(開発中の移行の爆発を避けるための便利なトリック)。その場合は、 `rake db:migrate:reset` を実行する必要があります。