2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

54.8. 错误和通知消息字段 #

本节描述了可能出现在 ErrorResponse 和 NoticeResponse 消息中的字段。每种字段类型都有一个单字节的标识符。请注意,任何给定的字段类型在一个消息中最多只能出现一次。

S

Severity: 字段内容为 ERRORFATALPANIC(在错误消息中),或 WARNINGNOTICEDEBUGINFOLOG(在通知消息中),或这些内容的本地化翻译。始终存在。

V

Severity: 字段内容为 ERRORFATALPANIC(在错误消息中),或 WARNINGNOTICEDEBUGINFOLOG(在通知消息中)。这与 S 字段相同,只是内容永远不会本地化。仅在 PostgreSQL 9.6 及更高版本生成的报文中出现。

C

Code: 错误的 SQLSTATE 代码(参见 附录 A)。不可本地化。始终存在。

M

Message: 主要的、人类可读的错误消息。应该准确但简洁(通常是一行)。始终存在。

D

Detail: 可选的次要错误消息,提供有关问题的更多详细信息。可能有多行。

H

Hint: 可选的有关如何解决问题的建议。此字段旨在与 Detail 不同,它提供建议(可能是不适用的)而不是事实。可能有多行。

P

Position: 字段值为十进制 ASCII 整数,指示错误游标位置,作为原始查询字符串中的索引。第一个字符索引为 1,位置以字符而不是字节为单位。

p

Internal position: 定义与 P 字段相同,但当游标位置指向内部生成的命令而不是客户端提交的命令时使用。当此字段出现时,q 字段也总是出现。

q

Internal query: 失败的内部生成命令的文本。例如,这可能是一个由 PL/pgSQL 函数发出的 SQL 查询。

W

Where: 指示错误发生上下文的信息。目前包括活动的过程语言函数和内部生成的查询的调用堆栈跟踪。跟踪信息每行一个条目,最近的先显示。

s

Schema name: 如果错误与特定数据库对象相关联,则为该对象的模式名称,如果存在的话。

t

Table name: 如果错误与特定表相关联,则为该表的名称。(有关表的模式名称,请参阅模式名称字段。)

c

Column name: 如果错误与特定表列相关联,则为该列的名称。(有关标识表的模式和表名称,请参阅模式和表名称字段。)

d

Data type name: 如果错误与特定数据类型相关联,则为该数据类型的名称。(有关数据类型模式名称,请参阅模式名称字段。)

n

Constraint name: 如果错误与特定约束相关联,则为该约束的名称。有关关联的表或域,请参阅上面列出的字段。(在此目的下,索引被视为约束,即使它们不是用约束语法创建的。)

F

File: 报告错误的源代码位置的文件名。

L

Line: 报告错误的源代码位置的行号。

R

Routine: 报告错误的源代码例程的名称。

注意

模式名称、表名称、列名称、数据类型名称和约束名称的字段仅为有限数量的错误类型提供;请参阅 附录 A。前端不应假设任何字段的存在保证了另一个字段的存在。核心错误源会观察到上述相互关系,但用户定义的函数可能会以其他方式使用这些字段。同样,客户端也不应假设这些字段表示当前数据库中的实时对象。

客户端负责根据其需求格式化显示的信息;特别是,它应该根据需要断开长行。错误消息字段中出现的换行符应被视为段落分隔符,而不是行分隔符。

提交更正

如果您在文档中发现任何不正确、与您使用的特定功能不符或需要进一步阐明的内容,请使用 此表单 报告文档问题。