↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 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 已结束支持。 请参阅 当前版本手册.

附录 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特权未被撤销
01004STRING DATA RIGHT TRUNCATION
01P01已弃用的特性
类 02无数据 — 按 SQL:1999 这也是一个警告类别
02000无数据
02001没有更多动态结果集返回
类 03SQL 语句尚未完成
03000SQL 语句尚未完成
类 08连接异常
08000连接异常
08003连接不存在
08006连接失败
08001SQL 客户端无法建立 SQL 连接
08004SQL 服务器拒绝建立 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幂函数参数无效
2201GWIDTH_BUCKET 函数参数无效
22018强制转换的字符值无效
22007无效的日期时间格式
22019无效的转义字符
2200D无效的转义八位字节
22025无效的转义序列
22010无效的指示器参数值
22020无效的限制值
22023无效的参数值
2201B无效的正则表达式
22009无效的时区偏移值
2200C转义字符的无效使用
2200G最明确类型不匹配
22004NULL 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无效的事务终止
类 2FSQL 例程异常
2F000SQL 例程异常
2F005函数未执行 RETURN 语句
2F002MODIFYING SQL DATA NOT PERMITTED
2F003PROHIBITED SQL STATEMENT ATTEMPTED
2F004READING 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 自身之外的错误)
58030IO 错误
58P01未定义的文件
58P02重复的文件
类 F0配置文件错误
F0000配置文件错误
F0001锁文件已存在
类 P0PL/pgSQL 错误
P0000PL/pgSQL 错误
P0001RAISE 异常
类 XX内部错误
XX000内部错误
XX001数据损坏
XX002索引损坏

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.