如何将unique: true
约束添加到Rails数据库中已存在的索引中?如何通过迁移将“唯一”约束添加到已存在的索引
我试图通过
def change
add_index :editabilities, [:user_id, :list_id], unique: true
end
迁移,但迁移失败,出现这样的错误。
Index name 'index_editabilities_on_user_id_and_list_id' on table 'editabilities' already exists
我正在使用rails4和postgresql。
我不得不做这两个迁移,以便'schema.rb '要更新。 – trliner
'schema.rb'在Rails 4.2.0上更新得很好。可能是一个现在已经解决的错误?或者它可能与数据库有关;我正在使用Postgres。 – GMA
如果您有一个外键约束阻止您删除索引,则这不起作用。在这种情况下,您可以删除外键,然后删除索引,然后再次添加新索引。 '''红宝石 ... remove_foreign_key:editabilities,列:user_id说明 remove_index:editabilities,:user_id说明 add_index:editabilities,:USER_ID,独特:真正 结束 ''' 如果你依靠您可能想要在生产数据库中使用不同的名称首先添加新的已修改索引,因此您有两个索引。然后,您可以删除旧的索引,然后重命名新的索引。 – Robert