25

rake db:migrate は新しい移行を追加するだけですか、それともすべての移行/変更を削除してすべてを新しく構築しますか?

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

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

4

3 に答える 3

19

スクリプト (スクリプト/生成モデルなど) を使用して移行を作成するたびに、新しい移行が正しいディレクトリに追加され、実際のデータベースと同期する準備が整います。

実際に rake db:migrate は、以前のものを気にせずに、欠落しているマイグレーションがまだデータベースに適用される必要があるかをチェックするだけです。

もちろん、他の方法を使用してデータベースを変更すると、非同期のものを取得するのが一般的です。

于 2009-06-17T14:00:45.573 に答える
7

移行とは、現在のバージョンから新しいバージョンに移行することを意味します(最初の回答で述べたように)。rake db:migrateを使用すると、スキーマに新しい変更を適用できます。ただし、以前の移行にロールバックする場合は、rake db:rollbackを使用して、新しい変更が正しく定義されていない場合は無効にすることができます。注意:そうすることで、データが失われます。

于 2010-04-05T07:31:55.170 に答える