约束错误

时间:2017-04-28 14:20:44

标签: postgresql elixir phoenix-framework ecto

Ecto向我提出以下错误:

** (exit) an exception was raised:
    ** (Ecto.ConstraintError) constraint error when attempting to insert struct:

    * unique: res_users_login_key

If you would like to convert this constraint into an error, please
call unique_constraint/3 in your changeset and define the proper
constraint name. The changeset defined the following constraints:

    * unique: res_users_login_index

我是否正确理解postgresql中约束的实际名称确定​​unique_constraint / 3函数是否成功?仅供参考,在postgreSQL中,约束定义如下:

Indexes:
    "res_users_pkey" PRIMARY KEY, btree (id)
    "res_users_login_key" UNIQUE CONSTRAINT, btree (login)

所以_key而非_index

我按如下方式调用约束函数:

 changeset |> unique_constraint(:login)

那么,我该如何做到这一点?

1 个答案:

答案 0 :(得分:3)

Ecto在未给出时使用的约束名称为{ echo "${foo:?"parameter is empty"}"; } 2>ls-error.txt 。您的表可能名为#{table_name}_#{field}_index,字段为res_users,这就是Ecto使用约束名login的原因,这在您的情况下是不正确的。您需要在res_users_login_index的调用中明确指定名称res_users_login_key

unique_constraint