Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

附录 A. PostgreSQL 错误代码

PostgreSQL 服务器发出的所有消息都分配了五字符错误代码,遵循 SQL 标准中用于 SQLSTATE 代码的惯例。需要了解已发生哪种错误情况的应用程序通常应测试错误代码,而不是查看文本错误消息。错误代码在 PostgreSQL 版本中不太可能发生变化,而且也不会因为错误消息本地化而发生变化。请注意,PostgreSQL 产生的部分(但不是全部)错误代码是由 SQL 标准定义的;已经发明了一些其他错误代码用于标准未定义的情况,或从其他数据库借用这些代码。

根据该标准,错误代码的前两个字符表示一个错误类型,而后三个字符表示该类型中的特定情况。因此,不识别特定错误代码的应用程序可能仍然能够从错误类型推断出该做什么。

表 A.1 列出了 PostgreSQL 17.1 中定义的所有错误代码。(目前有些代码并未实际使用,但已在 SQL 标准中定义了。)错误类型也会显示。对于每个错误类型,都有一个 标准 错误代码,最后三个字符是 000。此代码仅用于属于该类型的错误情况,但尚未分配更具体的代码的情况。

情况名称 列中显示的符号是可在 PL/pgSQL 中使用的条件名称。条件名称可以大写或小写书写。(请注意,PL/pgSQL 不识别警告(而不是错误)条件名称;这些名称属于 00、01 和 02 类。)

对于某些类型的错误,服务器将报告与错误关联的数据库对象(表、表列、数据类型或约束)的名称;例如,导致 unique_violation 错误的唯一约束的名称。此类名称会提供给错误报告消息的单独字段,因此,应用程序不必试图从消息(可能是经过本地化的易读文本)中提取它们。自 PostgreSQL 9.3 版本起,此功能已完全覆盖 SQLSTATE 类 23 中的错误(完整性约束冲突),但这可能会在将来得到扩展。

表 A.1. PostgreSQL 错误代码

错误代码 条件名称
类 00 — 成功完成
00000 successful_completion
类 01 — 警告
01000 warning
0100C dynamic_result_sets_returned
01008 implicit_zero_bit_padding
01003 null_value_eliminated_in_set_function
01007 privilege_not_granted
01006 privilege_not_revoked
01004 string_data_right_truncation
01P01 deprecated_feature
类 02 — 无数据(这按 SQL 标准也是一个警告类)
02000 no_data
02001 no_additional_dynamic_result_sets_returned
类 03 — SQL 语句尚未完成
03000 sql_statement_not_yet_complete
类 08 — 连接异常
08000 connection_exception
08003 connection_does_not_exist
08006 connection_failure
08001 sqlclient_unable_to_establish_sqlconnection
08004 sqlserver_rejected_establishment_of_sqlconnection
08007 transaction_resolution_unknown
08P01 protocol_violation
类 09 — 触发器操作异常
09000 triggered_action_exception
类 0A — 不支持的功能
0A000 feature_not_supported
类 0B — 无效的事务初始化
0B000 invalid_transaction_initiation
类 0F — 定位符异常
0F000 locator_exception
0F001 invalid_locator_specification
类 0L — 无效的授予者
0L000 invalid_grantor
0LP01 invalid_grant_operation
类 0P — 无效的角色规范
0P000 invalid_role_specification
类 0Z — 诊断异常
0Z000 diagnostics_exception
0Z002 stacked_diagnostics_accessed_without_active_handler
类 20 — 找不到案例
20000 case_not_found
类 21 — 基数违规
21000 cardinality_violation
类 22 — 数据异常
22000 data_exception
2202E array_subscript_error
22021 character_not_in_repertoire
22008 datetime_field_overflow
22012 division_by_zero
22005 error_in_assignment
2200B escape_character_conflict
22022 indicator_overflow
22015 interval_field_overflow
2201E invalid_argument_for_logarithm
22014 invalid_argument_for_ntile_function
22016 invalid_argument_for_nth_value_function
2201F invalid_argument_for_power_function
2201G invalid_argument_for_width_bucket_function
22018 invalid_character_value_for_cast
22007 invalid_datetime_format
22019 invalid_escape_character
2200D invalid_escape_octet
22025 invalid_escape_sequence
22P06 nonstandard_use_of_escape_character
22010 invalid_indicator_parameter_value
22023 无效参数值
22013 无效的前置或后置大小
2201B 无效的正则表达式
2201W limit 子句中的无效行计数
2201X result offset 子句中的无效行计数
2202H 无效的 tablesample 参数
2202G 无效的 tablesample 重复
22009 无效的时区位移值
2200C 无效的转义字符使用
2200G 最具体类型不匹配
22004 不允许空值
22002 空值没有指示符参数
22003 数值超出范围
2200H 序列生成器限制超限
22026 字符串数据长度不匹配
22001 string_data_right_truncation
22011 子字符串错误
22027 trim 错误
22024 未终止的 C 字符串
2200F 零长度的字符字符串
22P01 浮点异常
22P02 无效文本表示
22P03 无效二进制表示
22P04 copy 文件格式错误
22P05 不可翻译的字符
2200L 不是 XML 文档
2200M 无效的 XML 文档
2200N 无效的 XML 内容
2200S 无效的 XML 注释
2200T 无效的 XML 处理指令
22030 重复的 JSON 对象键值对
22031 无效的 SQL JSON 日期时间函数参数
22032 无效的 JSON 文本
22033 无效的 SQL JSON 下标
22034 超过一个 SQL JSON 项
22035 没有 SQL JSON 项
22036 非数字 SQL JSON 项
22037 JSON 对象中非唯一的键
22038 必需的单例 SQL JSON 项
22039 未找到 SQL JSON 数组
2203A 未找到 SQL JSON 成员
2203B 未找到 SQL JSON 数字
2203C 未找到 SQL JSON 对象
2203D JSON 数组元素过多
2203E JSON 对象成员过多
2203F 必需的 SQL JSON 标量
2203G 无法将 SQL JSON 项转换为目标类型
23 类 - 完整性约束违规
23000 完整性约束违规
23001 限制违规
23502 非空违规
23503 外键违规
23505 唯一违规
23514 检查违规
23P01 排除违规
24 类 - 无效游标状态
24000 无效游标状态
25 类 - 无效事务状态
25000 无效的事务状态
25001 活动 SQL 事务
25002 分支事务已激活
25008 hold 的游标要求相同的隔离级别
25003 分支事务的访问模式不适当
25004 分支事务的隔离级别不适当
25005 分支事务没有活动 SQL 事务
25006 只读 SQL 事务
25007 不支持模式和数据语句混合
25P01 没有活动 SQL 事务
25P02 失败的 SQL 事务中
25P03 事务会话超时期间闲置
25P04 事务超时
26 类 - 无效的 SQL 语句名称
26000 无效的 SQL 语句名称
27 类 - 触发数据更改违规
27000 触发的更改违规
28 类 - 无效授权规范
28000 无效的授权规范
28P01 无效的密码
2B 类 - 仍存在依赖的权限描述符
2B000 仍存在依赖的权限描述符
2BP01 仍存在依赖的对象
2D 类 - 无效的事务终止
2D000 无效事务终止
类 2F — SQL 例程异常
2F000 sql 例程异常
2F005 函数执行无返回语句
2F002 修改 SQL 数据不可用
2F003 尝试调用非法 SQL 语句
2F004 读取 SQL 数据不可用
类 34 — 无效游标名称
34000 无效游标名称
类 38 — 外部例程异常
38000 外部例程异常
38001 不允许包含 SQL
38002 修改 SQL 数据不可用
38003 尝试调用非法 SQL 语句
38004 读取 SQL 数据不可用
类 39 — 外部例程调用异常
39000 外部例程调用异常
39001 返回无效 SQL 状态
39004 不允许空值
39P01 触发器协议被违反
39P02 SRF 协议被违反
39P03 事件触发器协议被违反
类 3B — 保存点异常
3B000 保存点异常
3B001 无效保存点规范
类 3D — 无效目录名称
3D000 无效目录名称
类 3F — 无效架构名称
3F000 无效架构名称
类 40 — 事务回滚
40000 事务回滚
40002 事务完整性约束违反
40001 序列化失败
40003 语句完成未知
40P01 检测到死锁
类 42 — 语法错误或访问规则违反
42000 语法错误或访问规则违反
42601 语法错误
42501 特权不足
42846 无法强制转换
42803 分组错误
42P20 窗体错误
42P19 无效递归
42830 无效外键
42602 无效名称
42622 名称过长
42939 保留名称
42804 数据类型不匹配
42P18 数据类型未确定
42P21 校对不匹配
42P22 校对未确定
42809 对象类型错误
428C9 总是生成的
42703 未定义的列
42883 未定义的函数
42P01 未定义的表
42P02 未定义的参数
42704 未定义的对象
42701 重复的列
42P03 重复的游标
42P04 重复的数据库
42723 重复的函数
42P05 重复的预备语句
42P06 重复的架构
42P07 重复的表
42712 重复的别名
42710 重复的对象
42702 不确定的列
42725 不确定的函数
42P08 不确定的参数
42P09 不确定的别名
42P10 无效列引用
42611 无效列定义
42P11 无效游标定义
42P12 无效数据库定义
42P13 无效函数定义
42P14 无效预备语句定义
42P15 无效架构定义
42P16 无效表定义
42P17 无效对象定义
44 类 — 外检选项冲突
44000 外部检查选项冲突
53 类 — 资源不足
53000 资源不足
53100 磁盘空间已满
53200 内存不足
53300 连接过多
53400 配置限制已达上限
54 类 — 程序限制已达上限
54000 程序限制已达上限
54001 语句过于复杂
54011 列过多
54023 参数过多
55 类 — 对象不在先决条件状态
55000 对象不在先决条件状态
55006 对象正在使用中
55P02 无法更改运行时参数
55P03 锁不可用
55P04 不安全的枚举值用法
57 类 — 操作员干预
57000 操作员干预
57014 取消查询
57P01 管理员已关闭
57P02 崩溃关闭
57P03 当前无法连接
57P04 数据库已删除
57P05 空闲会话超时
58 类 — 系统错误(外部错误 PostgreSQL 本身)
58000 系统错误
58030 输入/输出错误
58P01 文件未定义
58P02 重复文件
F0 类 — 配置文件错误
F0000 配置文件错误
F0001 锁文件已存在
HV 类 — 外部数据包错误 (SQL/MED)
HV000 FDW 错误
HV005 未找到 FDW 列名称
HV002 需要 FDW 动态参数值
HV010 FDW 函数序列错误
HV021 FDW 描述符信息不一致
HV024 无效的 FDW 属性值
HV007 无效 FDW 列名称
HV008 无效 FDW 列数
HV004 无效的 FDW 数据类型
HV006 无效 FDW 数据类型描述符
HV091 无效的 FDW 描述符字段标识符
HV00B 无效的 FDW 句柄
HV00C 无效的 FDW 选项索引
HV00D 无效的 FDW 选项名称
HV090 无效的 FDW 字符串长度或缓冲区长度
HV00A 无效的 FDW 字符串格式
HV009 使用空指针不当
HV014 FDW 句柄过多
HV001 FDW 内存不足
HV00P FDW 没有架构
HV00J 未找到 FDW 选项名称
HV00K FDW 答复句柄
HV00Q 未找到 FDW 架构
HV00R 未找到 FDW 表
HV00L 无法创建 FDW 执行
HV00M 无法创建 FDW 答复
HV00N 无法建立 FDW 连接
P0 类 — PL/pgSQL 错误
P0000 plpgsql 错误
P0001 引发异常
P0002 未找到数据
P0003 行过多
P0004 断言失败
XX 类 — 内部错误
XX000 内部错误
XX001 数据已损坏
XX002 索引已损坏