2015-09-04 54 views
7

我有一個帶有電子郵件字段的用戶模型。現在我想使它獨一無二的,所以,按照文件,我需要申請:設置unique_constraint Ecto

cast(user, params, ~w(email), ~w()) 
|> unique_constraint(:email) 

而且,我應該在遷移定義唯一索引:

create unique_index(:users, [:email]) 

的問題是,當我試圖在遷移到這個定義,同時增加了一些更多的領域也沒有工作,現在我想只要定義這個create unique_index(:users, [:email])遷移,它是創造了一個錯誤:

[info] create index users_email_index 
** (Postgrex.Error) ERROR (unique_violation): could not create unique index "users_email_index" 

我是什麼樂隊克錯了?

+0

Postgres的實際錯誤響應是什麼?您發佈的帖子來自postgrex圖書館 – emaillenin

回答

11

當表中唯一約束已被違反時,可能會發生這種情況。

請檢查您的用戶表中是否有重複的電子郵件地址。您可以運行mix do ecto.drop, ecto.create, ecto.migrate刪除並重新創建數據庫和表。

+0

謝謝。應該是這樣的,因爲在執行你的建議之後,數據庫被清理了,現在它正在工作。 –