Rails通过现有数据库进行迁移

rod*_*gob 5 ruby database postgresql ruby-on-rails rails-migrations

我正在创建一个新的Rails 3.1应用程序.我希望这个新应用程序重用现有数据库(由以前的rails 2应用程序创建).

我创建了定义模型的新应用程序,它重用了数据库中的一些现有数据.

在开发和测试阶段,一切正常,因为它在一个干净的工作表数据库上运行,但在尝试部署到生产时,我得到的消息如下:

PGError: ERROR:  column "email" of relation "users" already exists
*** [err :: localhost] : ALTER TABLE "users" ADD COLUMN "email" character varying(255) DEFAULT '' NOT NULL
Run Code Online (Sandbox Code Playgroud)

但是我在迁移中的想法就像

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
Run Code Online (Sandbox Code Playgroud)

如何使db:migrate忽略已存在的内容并仅更改新内容和/或新类型?

我在stackoverflow上看到了类似的问题,但没有人回答这个问题.谢谢你的回答.

And*_*itt 10

如果您使用的是现有数据库,则不应尝试通过迁移覆盖它,您应该在schema.rb中复制现有数据库,然后从那里向前迁移,只添加已更改的字段.