我正在創建一個新的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
但是我有我的移民認爲像
class DeviseCreateUsers < ActiveRecord::Migration
def change
change_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
t.timestamps
end
end
我該如何讓db:migrate忽略已存在的內容,只更改新的內容和/或新的類型?
我在stackoverflow上看到類似的問題,但沒有回答這個問題。感謝您的回答。
我建議您創建一組遷移以複製現有生產數據庫,這些遷移應該放置在遷移列表的開始位置,此子集中的上次遷移應該包含當前生產模式版本的編號(請參閱'select max(version)來自生產數據庫的schema_migrations)。所有後來的遷移都應該修復。 – taro
感謝提示,這裏的問題是,例如''t.recoverable''會添加我不明確知道的字段。因此需要告訴軌道「只添加缺少的東西」。 – rodrigob
您可以檢查文件db/schema.rb以瞭解架構(包括開發和生產)。 – taro