本节描述了可能出现在 ErrorResponse 和 NoticeResponse 消息中的字段。每种字段类型都有一个单字节的标识符。请注意,任何给定的字段类型在每条消息中最多出现一次。
S
严重性:字段内容为 ERROR
、FATAL
或 PANIC
(在错误消息中),或 WARNING
、NOTICE
、DEBUG
、INFO
或 LOG
(在通知消息中),或者这些内容的本地化翻译。始终存在。
V
严重性:字段内容为 ERROR
、FATAL
或 PANIC
(在错误消息中),或 WARNING
、NOTICE
、DEBUG
、INFO
或 LOG
(在通知消息中)。这与 S
字段相同,只是内容永远不会本地化。仅在 PostgreSQL 9.6 及更高版本生成的消息中存在。
C
代码:错误的 SQLSTATE 代码(请参阅附录 A)。不可本地化。始终存在。
M
消息:主要的、人类可读的错误消息。这应该是准确但简洁的(通常为一行)。始终存在。
D
详细信息:一个可选的辅助错误消息,携带有关该问题的更多详细信息。可能会延伸到多行。
H
提示:关于如何解决问题的可选建议。这与“详细信息”的不同之处在于,它提供建议(可能不适当)而不是硬性事实。可能会延伸到多行。
P
位置:字段值是一个十进制 ASCII 整数,表示错误光标位置,作为原始查询字符串的索引。第一个字符的索引为 1,位置以字符而不是字节为单位测量。
p
内部位置:这与 P
字段的定义相同,但当光标位置引用内部生成的命令而不是客户端提交的命令时使用。当出现此字段时,q
字段始终会出现。
q
内部查询:失败的内部生成的命令的文本。例如,这可能是 PL/pgSQL 函数发出的 SQL 查询。
W
位置:指示发生错误的上下文。目前,这包括活动过程语言函数和内部生成的查询的调用堆栈回溯。跟踪每行一个条目,最近的优先。
s
模式名称:如果错误与特定的数据库对象相关联,则包含该对象的模式的名称(如果有)。
t
表名:如果错误与特定表相关联,则为该表的名称。(请参考模式名称字段以获取表的模式名称。)
c
列名:如果错误与特定表列相关联,则为该列的名称。(请参考模式和表名称字段以标识表。)
d
数据类型名称:如果错误与特定数据类型相关联,则为该数据类型的名称。(请参考模式名称字段以获取数据类型的模式名称。)
n
约束名称:如果错误与特定约束相关联,则为该约束的名称。请参考上面列出的字段以获取相关的表或域。(为此目的,索引被视为约束,即使它们不是使用约束语法创建的。)
F
文件:报告错误的源代码位置的文件名。
L
行:报告错误的源代码位置的行号。
R
例程:报告错误的源代码例程的名称。
模式名称、表名称、列名称、数据类型名称和约束名称的字段仅为有限数量的错误类型提供;请参阅附录 A。前端不应假设任何这些字段的存在保证另一个字段的存在。核心错误源遵守上面指出的相互关系,但用户定义的函数可能以其他方式使用这些字段。同样,客户端不应假设这些字段表示当前数据库中的当代对象。
客户端负责格式化显示的信息以满足其需求;特别地,它应根据需要断开长行。错误消息字段中出现的新行字符应被视为段落分隔符,而不是换行符。
如果您在文档中看到任何不正确、与特定功能不符或需要进一步澄清的内容,请使用此表单报告文档问题。