55.8. 错误和通知消息字段#
本节介绍 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。前端不应假设其中任何一个字段的存在保证了另一个字段的存在。核心错误源遵循上面提到的相互关系,但用户定义的函数可能会以其他方式使用这些字段。同样,客户端不应假设这些字段表示当前数据库中的当代对象。
客户端负责对显示的信息进行格式化以满足其需求;特别是,它应根据需要断开长行。错误消息字段中出现的换行符应视为段落分隔符,而不是换行符。