52.8. 错误和通知消息字段

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

  • S

    • 严重性:字段内容是ERRORFATALPANIC(在错误消息中)或WARNINGNOTICEDEBUGINFOLOG(在通知消息中),或其中之一的本地化翻译。始终存在。
  • V

    • 严重性:字段内容是ERRORFATALPANIC(在错误消息中),或WARNINGNOTICEDEBUGINFOLOG(在通知消息中)。这与S字段相同,除了内容从未本地化。这仅在 PostgreSQL 9.6 及更高版本生成的消息中存在。
  • C

    • 代码:错误的 SQLSTATE 代码(请参阅Appendix A)。不可本地化。始终存在。
  • M

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

    • 详细信息:可选的辅助错误消息,其中包含有关问题的更多详细信息。可能会运行到多行。
  • H

    • 提示:有关该问题的可选建议。这旨在与“细节”有所不同,因为它提供了建议(可能不合适)而不是事实。可能会运行到多行。
  • P

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

    • 内部位置:与P字段定义相同,但是在光标位置引用内部生成的命令而不是 Client 端提交的命令时使用。出现此字段时,总是会出现q字段。
  • q

    • 内部查询:内部生成的失败命令的文本。例如,这可以是由 PL/pgSQL 函数发出的 SQL 查询。
  • W

    • 其中:指示发生错误的上下文。当前,这包括对活动过程语言功能和内部生成的查询的调用堆栈回溯。跟踪是每行一个条目,最近的是第一行。
  • s

    • 模式名称:如果错误与特定的数据库对象相关联,则包含该对象的模式的名称(如果有)。
  • t

    • 表名:如果错误与特定表相关联,则为表名。 (有关表的架构名称,请参阅架构名称字段.)
  • c

    • 列名:如果错误与特定的表列相关,则为列名。 (请参阅架构和表名称字段以标识表.)
  • d

    • 数据类型名称:如果错误与特定数据类型相关联,则为数据类型的名称。 (有关数据类型的模式的名称,请参考模式名称字段.)
  • n

    • 约束名称:如果错误与特定约束相关联,则为约束的名称。有关关联的表或域,请参考上面列出的字段。 (为此,即使索引不是使用约束语法创建的,也应将它们视为约束.)
  • F

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

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

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

Note

仅为有限数量的错误类型提供模式名称,表名称,列名称,数据类型名称和约束名称的字段。参见Appendix A。前端不应假定任何这些字段的存在都可以保证另一个字段的存在。核心错误源遵循上面提到的相互关系,但是用户定义的函数可能以其他方式使用这些字段。同样,Client 不应假定这些字段表示当前数据库中的当代对象。

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