簡體   English   中英

has_and_belongs_to_many連接表中不允許使用主鍵

[英]Primary key is not allowed in a has_and_belongs_to_many join table

我在遺留代碼中有兩個實體,數據中心和項目之間的多對多鏈接表。 我發現,這真的是一對多的關系。

作為清理關系的第一步,我想在其中一個字段上添加一個唯一索引。

現在我收到以下錯誤:

has_and_belongs_to_many連接表(datacenters_projects)中不允許使用主鍵。

我正在使用在ruby 1.8.7p174和mysql Ver 14.12 Distrib 5.0.77上運行的Rails 2.3.8。

這不是主鍵,它只是一個獨特的索引。 我想這是一個候選鍵,但我還沒有確定它是一個主鍵。

我不知道為什么mysql認為這是一個主鍵。 我不知道為什么ActiveRecord會反對具有主鍵的has_and_belongs_to_many中的鏈接表。

但我真正的問題是,“有沒有什么方法可以在其中一個字段上放置一個唯一索引,而沒有ActiveRecord給我一個錯誤?”

有什么辦法可以告訴add_index這不是主鍵嗎?

我不確定為什么會失敗。 您應該能夠在遷移中使用SQL來解決它,例如:

ActiveRecord::Base.connection.execute("CREATE UNIQUE INDEX project_id_index ON datacenters_projects (project_id)")

切換到

has_many :through => ...

參考: 指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM