↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 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
历史版本PostgreSQL 8.0 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

附录 A. PostgreSQL错误代码

PostgreSQL 服务器发出的所有消息都被分配了五字符错误代码,遵循 SQL 标准对 “SQLSTATE” 代码的约定。需要知道发生了哪一种错误条件的应用,通常应测试错误代码,而不是查看错误消息的文本内容。这些错误代码在不同 PostgreSQL 版本之间更不容易发生变化,也不会因错误消息的本地化而改变。请注意,PostgreSQL 产生的错误代码中,只有一部分由 SQL 标准定义;还有一些用于标准未定义情况的附加错误代码,是新设的或从其他数据库借用而来的。

根据标准,错误代码的前两个字符表示错误类别,后三个字符表示该 类别中的特定条件。因此,即使应用无法识别某个具体错误代码, 仍可能从错误类别推断出应采取的操作。

表 A.1列出了 PostgreSQL 8.0.26 中定义的所有错误代码。(其中有些当前实际上并未使用,不过它们由 SQL 标准定义。)其中也显示了错误类别。对于每个错误类别,都有一个后三个字符为 000 的“标准”错误代码。该代码只用于那些属于该类别但没有分配更具体代码的错误情况。

每个错误代码的 PL/pgSQL 条件名与表中所示的短语相同, 只是把空格替换成下划线。例如,代码 22012(DIVISION BY ZERO)的条件名是 DIVISION_BY_ZERO。条件名可以大写或小写。 (注意, PL/pgSQL 不识别警告(而非错误)的 条件名;它们是类别 00、01 和 02。)

表 A.1. PostgreSQL错误代码

错误代码 含义
类 00 成功完成
00000 成功完成
类 01 警告
01000 警告
0100C 返回了动态结果集
01008 隐式零填充
01003 集合函数中消除了空值
01007 特权未被授予
01006 特权未被撤销
01004 STRING DATA RIGHT TRUNCATION
01P01 已弃用的特性
类 02 无数据 — 按 SQL:1999 这也是一个警告类别
02000 无数据
02001 没有更多动态结果集返回
类 03 SQL 语句尚未完成
03000 SQL 语句尚未完成
类 08 连接异常
08000 连接异常
08003 连接不存在
08006 连接失败
08001 SQL 客户端无法建立 SQL 连接
08004 SQL 服务器拒绝建立 SQL 连接
08007 事务解决方案未知
08P01 违反协议
类 09 触发动作异常
09000 触发动作异常
类 0A 不支持的特性
0A000 不支持的特性
类 0B 无效的事务启动
0B000 无效的事务启动
类 0F 定位器异常
0F000 定位器异常
0F001 无效的定位器规约
类 0L 无效的授权者
0L000 无效的授权者
0LP01 无效的授权操作
类 0P 无效的角色规约
0P000 无效的角色规约
类 21 基数违反
21000 基数违反
类 22 数据异常
22000 数据异常
2202E 数组下标错误
22021 字符不在字符集中
22008 日期时间字段溢出
22012 除以零
22005 赋值错误
2200B 转义字符冲突
22022 指示器溢出
22015 时间间隔字段溢出
2201E 对数函数参数无效
2201F 幂函数参数无效
2201G WIDTH_BUCKET 函数参数无效
22018 强制转换的字符值无效
22007 无效的日期时间格式
22019 无效的转义字符
2200D 无效的转义八位字节
22025 无效的转义序列
22010 无效的指示器参数值
22020 无效的限制值
22023 无效的参数值
2201B 无效的正则表达式
22009 无效的时区偏移值
2200C 转义字符的无效使用
2200G 最明确类型不匹配
22004 NULL VALUE NOT ALLOWED
22002 空值没有指示器参数
22003 数值超出范围
22026 字符串数据长度不匹配
22001 字符串数据右边截断
22011 子串错误
22027 修剪错误
22024 未终结的 C 字符串
2200F 零长度字符串
22P01 浮点异常
22P02 无效的文本表示形式
22P03 无效的二进制表示形式
22P04 错误的 COPY 文件格式
22P05 不可翻译的字符
类 23 违反完整性约束
23000 违反完整性约束
23001 违反限制
23502 违反非空约束
23503 违反外键约束
23505 违反唯一约束
23514 违反检查约束
类 24 无效的游标状态
24000 无效的游标状态
类 25 无效的事务状态
25000 无效的事务状态
25001 活跃 SQL 事务
25002 分支事务已激活
25008 保留游标要求相同的隔离级别
25003 分支事务的访问模式不合适
25004 分支事务的隔离级别不合适
25005 分支事务没有活跃 SQL 事务
25006 只读 SQL 事务
25007 不支持模式和数据语句混合
25P01 没有活跃 SQL 事务
25P02 在失败的 SQL 事务中
类 26 无效的 SQL 语句名称
26000 无效的 SQL 语句名称
类 27 触发数据更改违反
27000 触发数据更改违反
类 28 无效的授权规约
28000 无效的授权规约
类 2B 仍存在依赖的特权描述符
2B000 仍存在依赖的特权描述符
2BP01 仍存在依赖的对象
类 2D 无效的事务终止
2D000 无效的事务终止
类 2F SQL 例程异常
2F000 SQL 例程异常
2F005 函数未执行 RETURN 语句
2F002 MODIFYING SQL DATA NOT PERMITTED
2F003 PROHIBITED SQL STATEMENT ATTEMPTED
2F004 READING SQL DATA NOT PERMITTED
类 34 无效的游标名称
34000 无效的游标名称
类 38 外部例程异常
38000 外部例程异常
38001 不允许包含 SQL
38002 不允许修改 SQL 数据
38003 试图执行被禁止的 SQL 语句
38004 不允许读取 SQL 数据
类 39 外部例程调用异常
39000 外部例程调用异常
39001 返回了无效的 SQLSTATE
39004 不允许空值
39P01 违反触发器协议
39P02 违反 SRF 协议
类 3B 保存点异常
3B000 保存点异常
3B001 无效的保存点规约
类 3D 无效的目录名称
3D000 无效的目录名称
类 3F 无效的模式名称
3F000 无效的模式名称
类 40 事务回滚
40000 事务回滚
40002 事务违反完整性约束
40001 序列化失败
40003 语句完成状态未知
40P01 检测到死锁
类 42 语法错误或违反访问规则
42000 语法错误或违反访问规则
42601 语法错误
42501 特权不足
42846 不能强制转换
42803 分组错误
42830 无效的外键
42602 无效的名称
42622 名称过长
42939 保留的名称
42804 数据类型不匹配
42P18 不确定的数据类型
42809 错误的对象类型
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 违反 WITH CHECK 选项
44000 违反 WITH CHECK 选项
类 53 资源不足
53000 资源不足
53100 磁盘已满
53200 内存不足
53300 连接过多
类 54 超出程序限制
54000 超出程序限制
54001 语句过于复杂
54011 列太多
54023 参数太多
类 55 对象不处于先决状态
55000 对象不处于先决状态
55006 对象正在使用中
55P02 无法更改运行时参数
55P03 锁不可用
类 57 操作员干预
57000 操作员干预
57014 查询被取消
57P01 管理员关闭
57P02 崩溃关闭
57P03 现在无法连接
类 58 系统错误(PostgreSQL 自身之外的错误)
58030 IO 错误
58P01 未定义的文件
58P02 重复的文件
类 F0 配置文件错误
F0000 配置文件错误
F0001 锁文件已存在
类 P0 PL/pgSQL 错误
P0000 PL/pgSQL 错误
P0001 RAISE 异常
类 XX 内部错误
XX000 内部错误
XX001 数据损坏
XX002 索引损坏

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。