Postgresql 如何获取唯一_约束冲突的列名?
我正在使用pq驱动程序,我想知道当我遇到唯一的约束冲突时,为什么pq.Error会给出一个空列 我可以解析Postgresql 如何获取唯一_约束冲突的列名?,postgresql,go,pq,Postgresql,Go,Pq,我正在使用pq驱动程序,我想知道当我遇到唯一的约束冲突时,为什么pq.Error会给出一个空列 我可以解析详细信息,但有什么原因导致列为空?如果我能直接从列获取电子邮件,而不是解析细节 下面是错误的样子: Severity:"ERROR" Code:"23505" Message:"duplicate key value violates unique constraint "unique_users"" Detail:"Key (email)=(user3@email.com) already
详细信息
,但有什么原因导致列
为空?如果我能直接从列
获取电子邮件
,而不是解析细节
下面是错误的样子:
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"
不幸的是,
列
值为空。我正在尝试为我的应用程序提供错误消息,我想知道是否有某种方法可以获取这些信息,以便我可以增强消息,说明为什么没有创建实体,并让调用者知道字段(在本例中为email
)。特定的错误消息(包括违反的约束和列/值)位于字段详细信息中
编辑:
我猜Column
是空的,因为unique约束可能会影响多个列Constraint
提供约束名称,与Schema
和Table
结合使用,您可以在pg\u Constraint
中查找此约束。字段conkey
可能包含对覆盖属性的引用。正确。我想知道为什么列
是一个空字符串。如果我可以只获取列
,而不必解析细节
来获取字段名,那么这将是更好的选择。如果列
为空,我是否做错了什么?我猜列
为空,因为唯一约束可能会影响多个列Constraint
提供约束名称,与Schema
和Table
相结合,您可以在pg\u Constraint
中删除此约束。字段conkey
可能包含对覆盖属性的引用。您的意思是conkey
将包含对列的引用。