新しいRails 3.1アプリケーションを作成しています。 この新しいアプリケーションは、既存のデータベース(これは以前のrails 2アプリケーションで作成されたもの)を再利用したいと思います。既存のデータベース上のRailsの移行
データベース内の既存のデータの一部を再利用する新しいアプリケーション定義モデルを作成しました。
それはクリーンシートデータベース上で実行されるため、開発およびテスト段階ではすべてがうまく動作しますが、生産に展開しようとすると、私のようなメッセージが出ます:私は私の移行を持っているしかし
PGError: ERROR: column "email" of relation "users" already exists
*** [err :: localhost] : ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT NULL
は次のように考えています
db:migrateを既存のものを無視し、新しいものや新しいタイプのみを変更するにはどうすればよいですか?
私はstackoverflowで同様の質問を見ましたが、この質問には答えません。あなたの答えをありがとう。
既存の本番データベースを複製するための移行セットを作成することをお勧めします。これらの移行は移行リストの先頭に置く必要があります。このサブセットの最後の移行には、現在の本番スキーマバージョン番号が必要ですプロダクションデータベースのschema_migrationsから)。その後の移行はすべて修正する必要があります。 – taro
ヒントのおかげで、ここでの問題は、例えば、 '' t.recoverable''は私が明示的に知らないフィールドを追加することです。したがって、レールに「欠けているものだけを加える」ように伝える必要がある。 – rodrigob
ファイルdb/schema.rbを検査して、スキーマ(開発と本番環境の両方)について考えてみることができます。 – taro