本节描述了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
Code: 错误的SQLSTATE代码(参见附录 A)。不可本地化。始终存在。
M
消息: 主要的人类可读错误消息。 这应该准确但简洁(通常一行)。 总是存在。
D
详细信息:一个可选的次要错误消息,提供有关问题的更多详细信息。可能会跨多行。
H
提示: 关于问题应该怎么做的一个可选建议。 这意在与细节不同,它提供建议(可能不合适)而不是硬性事实。 可能会跨越多行。
P
位置:字段值是一个十进制ASCII整数,表示错误光标位置,作为原始查询字符串的索引。 第一个字符的索引为1,位置以字符而非字节计量。
p
内部位置:这与P
字段的定义相同,但在光标位置指向内部生成的命令而不是客户端提交的命令时使用。
当此字段出现时,q
字段将始终出现。
q
内部查询: 一个失败的内部生成命令的文本。 例如,这可能是由PL/pgSQL函数发出的SQL查询。
W
Where: 错误发生的上下文指示。 目前包括活动的过程语言函数和内部生成查询的调用堆栈回溯。 跟踪每行一个条目,最近的在前。
s
Schema name: 如果错误与特定数据库对象相关联,则为包含该对象的模式的名称(如果有)。
t
表名: 如果错误与特定表相关联,则为表的名称。(有关表模式名称的名称,请参考模式名称字段。)
c
列名: 如果错误与特定表列相关联,则为列的名称。(请参考模式和表名字段以识别表。)
d
数据类型名称: 如果错误与特定数据类型相关联,则为数据类型的名称。 (有关数据类型模式的名称,请参阅模式名称字段。)
n
约束名称: 如果错误与特定约束相关联,则为约束的名称。请参考上面列出的字段,了解相关表格或域。 (为此,即使索引不是使用约束语法创建的,也将其视为约束。)
F
文件: 报告错误的源代码位置的文件名。
L
Line: 源代码位置的行号,报告错误的位置。
R
Routine: 报告错误的源代码例程的名称。
模式名称、表名称、列名称、数据类型名称和约束名称的字段仅针对有限数量的错误类型提供; 请参阅附录 A。前端不应假设任何这些字段的存在就保证了另一个字段的存在。 核心错误源观察到上述相互关系,但用户定义的函数可能以其他方式使用这些字段。 同样地,客户端不应假设这些字段表示当前数据库中的当代对象。
客户端负责格式化显示的信息以满足其需求;特别是应根据需要换行。错误消息字段中出现的换行符应被视为段落分隔符,而不是换行符。