如何將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