pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
PostgreSQL 服务器发出的所有消息都被分配了 五字符错误代码,遵循 SQL 标准对“SQLSTATE”代码的约定。 需要知道发生了哪一种错误条件的应用,通常应测试错误代码, 而不是查看错误消息的文本内容。这些错误代码在不同 PostgreSQL 版本之间更不容易发生变化, 也不会因错误消息的本地化而改变。
根据标准,错误代码的前两个字符表示错误的类别,后三个字符表示 该类别中的特定条件。因此,即使应用无法识别某个具体错误代码, 仍可能从错误类别推断出应采取的操作。
表 A.1列出了 PostgreSQL 7.4.30 中定义的所有错误代码。(其中有些当前实际上并未使用, 不过它们由 SQL 标准定义。)错误类别也一并显示。对于每个错误类别, 都有一个“标准”错误代码,其最后三个字符为000。 该代码只用于那些属于该类别但没有分配更具体代码的错误情况。
表 A.1. PostgreSQL Error Codes
| Error Code | Meaning |
|---|---|
| Class 00 | 成功完成 |
00000 |
SUCCESSFUL COMPLETION |
| Class 01 | 警告 |
01000 |
WARNING |
0100C |
WARNING DYNAMIC RESULT SETS RETURNED |
01008 |
WARNING IMPLICIT ZERO BIT PADDING |
01003 |
WARNING NULL VALUE ELIMINATED IN SET FUNCTION |
01004 |
WARNING STRING DATA RIGHT TRUNCATION |
| Class 02 | 无数据(按 SQL99 这也是一个警告类别) |
02000 |
NO DATA |
02001 |
NO ADDITIONAL DYNAMIC RESULT SETS RETURNED |
| Class 03 | SQL 语句尚未完成 |
03000 |
SQL STATEMENT NOT YET COMPLETE |
| Class 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 |
| Class 09 | 触发动作异常 |
09000 |
TRIGGERED ACTION EXCEPTION |
| Class 0A | 不支持的特性 |
0A000 |
FEATURE NOT SUPPORTED |
| Class 0B | 无效的事务启动 |
0B000 |
INVALID TRANSACTION INITIATION |
| Class 0F | 定位器异常 |
0F000 |
LOCATOR EXCEPTION |
0F001 |
INVALID SPECIFICATION |
| Class 0L | 无效的授权者 |
0L000 |
INVALID GRANTOR |
0LP01 |
INVALID GRANT OPERATION |
| Class 0P | 无效的角色规范 |
0P000 |
INVALID ROLE SPECIFICATION |
| Class 21 | 基数违反 |
21000 |
CARDINALITY VIOLATION |
| Class 22 | 数据异常 |
22000 |
DATA EXCEPTION |
2202E |
ARRAY ELEMENT 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 |
22018 |
INVALID CHARACTER VALUE FOR CAST |
22007 |
INVALID DATETIME FORMAT |
22019 |
INVALID ESCAPE CHARACTER |
2200D |
INVALID ESCAPE OCTET |
22025 |
INVALID ESCAPE SEQUENCE |
22010 |
INVALID INDICATOR PARAMETER VALUE |
22020 |
INVALID LIMIT VALUE |
22023 |
INVALID PARAMETER VALUE |
2201B |
INVALID REGULAR EXPRESSION |
22009 |
INVALID TIME ZONE DISPLACEMENT VALUE |
2200C |
INVALID USE OF ESCAPE CHARACTER |
2200G |
MOST SPECIFIC TYPE MISMATCH |
22004 |
NULL VALUE NOT ALLOWED |
22002 |
NULL VALUE NO INDICATOR PARAMETER |
22003 |
NUMERIC VALUE OUT OF RANGE |
22026 |
STRING DATA LENGTH MISMATCH |
22001 |
STRING DATA RIGHT TRUNCATION |
22011 |
SUBSTRING ERROR |
22027 |
TRIM ERROR |
22024 |
UNTERMINATED C STRING |
2200F |
ZERO LENGTH CHARACTER STRING |
22P01 |
FLOATING POINT EXCEPTION |
22P02 |
INVALID TEXT REPRESENTATION |
22P03 |
INVALID BINARY REPRESENTATION |
22P04 |
BAD COPY FILE FORMAT |
22P05 |
UNTRANSLATABLE CHARACTER |
| Class 23 | 完整性约束违反 |
23000 |
INTEGRITY CONSTRAINT VIOLATION |
23001 |
RESTRICT VIOLATION |
23502 |
NOT NULL VIOLATION |
23503 |
FOREIGN KEY VIOLATION |
23505 |
UNIQUE VIOLATION |
23514 |
CHECK VIOLATION |
| Class 24 | 无效的游标状态 |
24000 |
INVALID CURSOR STATE |
| Class 25 | 无效的事务状态 |
25000 |
INVALID TRANSACTION STATE |
25001 |
ACTIVE SQL TRANSACTION |
25002 |
BRANCH TRANSACTION ALREADY ACTIVE |
25008 |
HELD CURSOR REQUIRES SAME ISOLATION LEVEL |
25003 |
INAPPROPRIATE ACCESS MODE FOR BRANCH TRANSACTION |
25004 |
INAPPROPRIATE ISOLATION LEVEL FOR BRANCH TRANSACTION |
25005 |
NO ACTIVE SQL TRANSACTION FOR BRANCH TRANSACTION |
25006 |
READ ONLY SQL TRANSACTION |
25007 |
SCHEMA AND DATA STATEMENT MIXING NOT SUPPORTED |
25P01 |
NO ACTIVE SQL TRANSACTION |
25P02 |
IN FAILED SQL TRANSACTION |
| Class 26 | 无效的 SQL 语句名称 |
26000 |
INVALID SQL STATEMENT NAME |
| Class 27 | 触发的数据更改违反 |
27000 |
TRIGGERED DATA CHANGE VIOLATION |
| Class 28 | 无效的授权规范 |
28000 |
INVALID AUTHORIZATION SPECIFICATION |
| Class 2B | 仍存在依赖的权限描述符 |
2B000 |
DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST |
2BP01 |
DEPENDENT OBJECTS STILL EXIST |
| Class 2D | 无效的事务终止 |
2D000 |
INVALID TRANSACTION TERMINATION |
| Class 2F | SQL 例程异常 |
2F000 |
SQL ROUTINE EXCEPTION |
2F005 |
FUNCTION EXECUTED NO RETURN STATEMENT |
2F002 |
MODIFYING SQL DATA NOT PERMITTED |
2F003 |
PROHIBITED SQL STATEMENT ATTEMPTED |
2F004 |
READING SQL DATA NOT PERMITTED |
| Class 34 | 无效的游标名称 |
34000 |
INVALID CURSOR NAME |
| Class 38 | 外部例程异常 |
38000 |
EXTERNAL ROUTINE EXCEPTION |
38001 |
CONTAINING SQL NOT PERMITTED |
38002 |
MODIFYING SQL DATA NOT PERMITTED |
38003 |
PROHIBITED SQL STATEMENT ATTEMPTED |
38004 |
READING SQL DATA NOT PERMITTED |
| Class 39 | 外部例程调用异常 |
39000 |
EXTERNAL ROUTINE INVOCATION EXCEPTION |
39001 |
INVALID SQLSTATE RETURNED |
39004 |
NULL VALUE NOT ALLOWED |
39P01 |
TRIGGER PROTOCOL VIOLATED |
39P02 |
SRF PROTOCOL VIOLATED |
| Class 3D | 无效的目录名称 |
3D000 |
INVALID CATALOG NAME |
| Class 3F | 无效的模式名称 |
3F000 |
INVALID SCHEMA NAME |
| Class 40 | 事务回卷 |
40000 |
TRANSACTION ROLLBACK |
40002 |
INTEGRITY CONSTRAINT VIOLATION |
40001 |
SERIALIZATION FAILURE |
40003 |
STATEMENT COMPLETION UNKNOWN |
40P01 |
DEADLOCK DETECTED |
| Class 42 | 语法错误或访问规则违反 |
42000 |
SYNTAX ERROR OR ACCESS RULE VIOLATION |
42601 |
SYNTAX ERROR |
42501 |
INSUFFICIENT PRIVILEGE |
42846 |
CANNOT COERCE |
42803 |
GROUPING ERROR |
42830 |
INVALID FOREIGN KEY |
42602 |
INVALID NAME |
42622 |
NAME TOO LONG |
42939 |
RESERVED NAME |
42804 |
DATATYPE MISMATCH |
42P18 |
INDETERMINATE DATATYPE |
42809 |
WRONG OBJECT TYPE |
42703 |
UNDEFINED COLUMN |
42883 |
UNDEFINED FUNCTION |
42P01 |
UNDEFINED TABLE |
42P02 |
UNDEFINED PARAMETER |
42704 |
UNDEFINED OBJECT |
42701 |
DUPLICATE COLUMN |
42P03 |
DUPLICATE CURSOR |
42P04 |
DUPLICATE DATABASE |
42723 |
DUPLICATE FUNCTION |
42P05 |
DUPLICATE PSTATEMENT |
42P06 |
DUPLICATE SCHEMA |
42P07 |
DUPLICATE TABLE |
42712 |
DUPLICATE ALIAS |
42710 |
DUPLICATE OBJECT |
42702 |
AMBIGUOUS COLUMN |
42725 |
AMBIGUOUS FUNCTION |
42P08 |
AMBIGUOUS PARAMETER |
42P09 |
AMBIGUOUS ALIAS |
42P10 |
INVALID COLUMN REFERENCE |
42611 |
INVALID COLUMN DEFINITION |
42P11 |
INVALID CURSOR DEFINITION |
42P12 |
INVALID DATABASE DEFINITION |
42P13 |
INVALID FUNCTION DEFINITION |
42P14 |
INVALID PSTATEMENT DEFINITION |
42P15 |
INVALID SCHEMA DEFINITION |
42P16 |
INVALID TABLE DEFINITION |
42P17 |
INVALID OBJECT DEFINITION |
| Class 44 | 违反 WITH CHECK OPTION |
44000 |
WITH CHECK OPTION VIOLATION |
| Class 53 | 资源不足 |
53000 |
INSUFFICIENT RESOURCES |
53100 |
DISK FULL |
53200 |
OUT OF MEMORY |
53300 |
TOO MANY CONNECTIONS |
| Class 54 | 超出程序限制 |
54000 |
PROGRAM LIMIT EXCEEDED |
54001 |
STATEMENT TOO COMPLEX |
54011 |
TOO MANY COLUMNS |
54023 |
TOO MANY ARGUMENTS |
| Class 55 | 对象未处于先决状态 |
55000 |
OBJECT NOT IN PREREQUISITE STATE |
55006 |
OBJECT IN USE |
55P02 |
CANT CHANGE RUNTIME PARAM |
| Class 57 | 操作员干预 |
57000 |
OPERATOR INTERVENTION |
57014 |
QUERY CANCELED |
57P01 |
ADMIN SHUTDOWN |
57P02 |
CRASH SHUTDOWN |
57P03 |
CANNOT CONNECT NOW |
| Class 58 | 系统错误(PostgreSQL 本身之外的错误) |
58030 |
IO ERROR |
58P01 |
UNDEFINED FILE |
58P02 |
DUPLICATE FILE |
| Class F0 | 配置文件错误 |
F0000 |
CONFIG FILE ERROR |
F0001 |
LOCK FILE EXISTS |
| Class XX | 内部错误 |
XX000 |
INTERNAL ERROR |
XX001 |
DATA CORRUPTED |
XX002 |
INDEX CORRUPTED |
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。