这是我在RoR应用程序中运行迁移时遇到的错误:
PG::Error: ERROR: column "bulk_bill" of relation "questionnaires" already exists
一点背景: 我回滚了一个迁移,以便我可以更改列的默认设置。 一旦我再次运行迁移,我就得到了上面的错误。
我可以在开发中的postgresql表中看到该列确实存在。我在表和bulk_bill列中有一个数据,它的默认设置为false。
我需要采取哪些建议步骤,以便我可以成功运行迁移。 我是ruby的初学者,发现ruby文档仍然有点难以理解。
def up
add_column :questionnaires, :bulk_bill, :boolean, :default => false
end
def down
remove_column :pnp_questionnaires, :bulk_bill
end
答案 0 :(得分:2)
在up
方法中,您要在questionaries
表格中创建列,并在您的向下方法中将其从pnp_questionaries
中删除。如果表不存在,删除列不会引发除外,因此您有问题。
最简单的解决方案:
add_column
。down
方法以删除questionaries
表。up
方法。更新:
我的不好之处3是'从问题中删除列',而不是'删除表'。
您需要重新运行创建该表的迁移(希望您在此期间不会改变它)。转到给定的迁移,注释掉down
方法正文,然后运行rake db:migrate:redo VERSION=xxxxxxx
,其中xxxxxx
是此迁移文件名中的时间戳。