-1

我正在使用 pq 驱动程序,我想知道为什么当我面临唯一约束违规时 pq.Error 会给出一个空列。

我可以解析Detail,但有什么理由为什么Column会是空的?如果我能从中获取emailColumn不是解析会更好Detail

这是错误的样子:

Severity:"ERROR"
Code:"23505"
Message:"duplicate key value violates unique constraint "unique_users""
Detail:"Key (email)=(user3@email.com) already exists."
Hint:""
Position:""
InternalPosition:""
InternalQuery:""
Where:""
Schema:"public"
Table:"users"
Column:""
DataTypeName:""
Constraint:"unique_users"
File:"nbtinsert.c"
Line:"534"
Routine:"_bt_check_unique"

不幸的是,该Column值为空。我正在尝试为我的应用程序提供错误消息,我想知道是否有某种方法可以获取该信息,以便我可以增强未创建实体的消息并让调用者知道该字段(email在这种情况下) 也是如此。

4

1 回答 1

2

具体的错误消息(包括违反的约束和列/值)在字段中Detail

编辑

我猜Column是空的,因为唯一约束可能会影响多个列。Constraint提供约束名称,结合Schema并且Table您可以在 中查找此约束pg_constraint。字段conkey可能包含对所涵盖属性的引用。

于 2019-09-08T22:45:15.647 回答