PostgreSQL 错误代码
PostgreSQL 8.2.3 中文文档
后退快退快进前进

附录A. PostgreSQL 错误代码

PostgreSQL 服务器发出的所有消息都赋予了五个字符的错误代码,这些代码遵循 SQL 的"SQLSTATE"代码的习惯。需要知道发生了什么错误条件的应用通常应该测试错误代码,而不是查看文本错误信息。这些错误代码轻易不会随着 PostgreSQL 的版本更新而修改,并且一般也不会随着错误信息的本地化而发生修改。请注意有些(但不是全部) PostgreSQL 生成的错误代码是由 SQL 标准定义的;有些标准没有定义的错误条件是发明的或者是从其它数据库借来的。

根据标准,错误代码的头两个字符表示错误类别,而后三个字符表示在该类别内特定的条件。因此,那些不能识别特定错误代码的应用仍然可以从错误类别中推断要做什么。

表A-1里面列出了 PostgreSQL 8.2.3 定义的所有错误代码(有些实际上目前并没有使用,但是 SQL 标准定义了)。错误类别也列出在此。对于每个错误类别都有个"标准"的错误代码,它的最后三个字符是 000 。这个代码只用于那些落在该类别内,但是没有赋予任何更准确的代码的错误条件。

PL/pgSQL 用于每个错误代码的条件名和表中显示的措辞相同,只是用下划线代替了空白。比如,代码 22012, DIVISION BY ZERO 的条件名是 DIVISION_BY_ZERO 。条件名大小写无关。请注意 PL/pgSQL 并不识别警告,这一点和错误、条件名正相反;那些是 00, 01, 02 类别。

表A-1. PostgreSQL 错误代码

错误代码含义常量
类 00 — 成功完成
00000成功完成
(SUCCESSFUL COMPLETION)
successful_completion
类 01 — 警告
01000警告
(WARNING)
warning
0100C返回了动态结果
(DYNAMIC RESULT SETS RETURNED)
dynamic_result_sets_returned
01008警告,隐含补齐了零比特位
(IMPLICIT ZERO BIT PADDING)
implicit_zero_bit_padding
01003在集合函数里消除了 NULL
(NULL VALUE ELIMINATED IN SET FUNCTION)
null_value_eliminated_in_set_function
01007没有赋予权限
(PRIVILEGE NOT GRANTED)
privilege_not_granted
01006没有撤销权限
(PRIVILEGE NOT REVOKED)
privilege_not_revoked
01004字符串数据在右端截断
(STRING DATA RIGHT TRUNCATION)
string_data_right_truncation
01P01废弃的特性
(DEPRECATED FEATURE)
deprecated_feature
类 02 — 没有数据(按照 SQL 标准的要求,这也是警告类)
02000没有数据
(NO DATA)
no_data
02001返回了没有附加动态结果集
(NO ADDITIONAL DYNAMIC RESULT SETS RETURNED)
no_additional_dynamic_result_sets_returned
类 03 — SQL 语句尚未结束
03000SQL 语句尚未结束
(SQL STATEMENT NOT YET COMPLETE)
sql_statement_not_yet_complete
类 08 — 连接异常
08000连接异常
(CONNECTION EXCEPTION)
connection_exception
08003连接不存在
(CONNECTION DOES NOT EXIST)
connection_does_not_exist
08006连接失败
(CONNECTION FAILURE)
connection_failure
08001SQL 客户端不能建立 SQL 连接
(SQLCLIENT UNABLE TO ESTABLISH SQLCONNECTION)
sqlclient_unable_to_establish_sqlconnection
08004SQL 服务器拒绝建立 SQL 连接
(SQLSERVER REJECTED ESTABLISHMENT OF SQLCONNECTION)
sqlserver_rejected_establishment_of_sqlconnection
08007未知的事务解析
(TRANSACTION RESOLUTION UNKNOWN)
transaction_resolution_unknown
08P01违反协议
(PROTOCOL VIOLATION)
protocol_violation
类 09 — 触发器动作异常
09000触发器动作异常
(TRIGGERED ACTION EXCEPTION)
triggered_action_exception
类 0A — 不支持特性
0A000不支持此特性
(FEATURE NOT SUPPORTED)
feature_not_supported
类 0B — 非法事务初始化
0B000非法事务初始化
(INVALID TRANSACTION INITIATION)
invalid_transaction_initiation
类 0F — 定位器异常
0F000定位器异常
(LOCATOR EXCEPTION)
locator_exception
0F001非法的定位器声明
(INVALID LOCATOR SPECIFICATION)
invalid_locator_specification
类 0L — 非法赋权人
0L000非法赋权人
(INVALID GRANTOR)
invalid_grantor
0LP01非法赋权操作
(INVALID GRANT OPERATION)
invalid_grant_operation
类 0P — 非法角色声明
0P000非法角色声明
(INVALID ROLE SPECIFICATION)
invalid_role_specification
类 21 — 势违例
21000势违例
(CARDINALITY VIOLATION)
cardinality_violation
类 22 — 数据异常
22000数据异常
(DATA EXCEPTION)
data_exception
2202E数组下标错误
(ARRAY SUBSCRIPT ERROR)
array_subscript_error
22021字符不在准备好的范围内
(CHARACTER NOT IN REPERTOIRE)
character_not_in_repertoire
22008日期时间字段溢出
(DATETIME FIELD OVERFLOW)
datetime_field_overflow
22012被零除
(DIVISION BY ZERO)
division_by_zero
22005赋值中出错
(ERROR IN ASSIGNMENT)
error_in_assignment
2200B逃逸字符冲突
(ESCAPE CHARACTER CONFLICT)
escape_character_conflict
22022指示器溢出
(INDICATOR OVERFLOW)
indicator_overflow
22015内部字段溢出
(INTERVAL FIELD OVERFLOW)
interval_field_overflow
2201E对数运算的非法参数
(INVALID ARGUMENT FOR LOGARITHM)
invalid_argument_for_logarithm
2201F指数函数的非法参数
(INVALID ARGUMENT FOR POWER FUNCTION)
invalid_argument_for_power_function
2201G宽桶函数的非法参数
(INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION)
invalid_argument_for_width_bucket_function
22018类型转换时非法的字符值
(INVALID CHARACTER VALUE FOR CAST)
invalid_character_value_for_cast
22007非法日期时间格式
(INVALID DATETIME FORMAT)
invalid_datetime_format
22019非法的逃逸字符
(INVALID ESCAPE CHARACTER)
invalid_escape_character
2200D非法的逃逸字节
(INVALID ESCAPE OCTET)
invalid_escape_octet
22025非法逃逸序列
(INVALID ESCAPE SEQUENCE)
invalid_escape_sequence
22P06非标准使用逃逸字符
(NONSTANDARD USE OF ESCAPE CHARACTER)
nonstandard_use_of_escape_character
22010非法指示器参数值
(INVALID INDICATOR PARAMETER VALUE)
invalid_indicator_parameter_value
22020非法限制值
(INVALID LIMIT VALUE)
invalid_limit_value
22023非法参数值
(INVALID PARAMETER VALUE)
invalid_parameter_value
2201B非法正则表达式
(INVALID REGULAR EXPRESSION)
invalid_regular_expression
22009非法时区显示值
(INVALID TIME ZONE DISPLACEMENT VALUE)
invalid_time_zone_displacement_value
2200C非法使用逃逸字符
(INVALID USE OF ESCAPE CHARACTER)
invalid_use_of_escape_character
2200G最相关类型不匹配
(MOST SPECIFIC TYPE MISMATCH)
most_specific_type_mismatch
22004不允许 NULL 值
(NULL VALUE NOT ALLOWED)
null_value_not_allowed
22002NULL 值不能做指示器参数
(NULL VALUE NO INDICATOR PARAMETER)
null_value_no_indicator_parameter
22003数字值超出范围
(NUMERIC VALUE OUT OF RANGE)
numeric_value_out_of_range
22026字符串数据长度不匹配
(STRING DATA LENGTH MISMATCH)
string_data_length_mismatch
22001字符串数据右边被截断
(STRING DATA RIGHT TRUNCATION)
string_data_right_truncation
22011抽取子字符串错误
(SUBSTRING ERROR)
substring_error
22027截断错误
(TRIM ERROR)
trim_error
22024未结束的 C 字符串
(UNTERMINATED C STRING)
unterminated_c_string
2200F零长度的字符串
(ZERO LENGTH CHARACTER STRING)
zero_length_character_string
22P01浮点异常
(FLOATING POINT EXCEPTION)
floating_point_exception
22P02非法文本表现形式
(INVALID TEXT REPRESENTATION)
invalid_text_representation
22P03非法二进制表现形式
(INVALID BINARY REPRESENTATION)
invalid_binary_representation
22P04错误的 COPY 格式
(BAD COPY FILE FORMAT)
bad_copy_file_format
22P05不可翻译字符
(UNTRANSLATABLE CHARACTER)
untranslatable_character
类 23 — 违反完整性约束
23000违反完整性约束
(INTEGRITY CONSTRAINT VIOLATION)
integrity_constraint_violation
23001违反限制
(RESTRICT VIOLATION)
restrict_violation
23502违反非空
(NOT NULL VIOLATION)
not_null_violation
23503违反外键约束
(FOREIGN KEY VIOLATION)
foreign_key_violation
23505违反唯一约束
(UNIQUE VIOLATION)
unique_violation
23514违反检查
(CHECK VIOLATION)
check_violation
类 24 — 非法游标状态
24000非法游标状态
(INVALID CURSOR STATE)
invalid_cursor_state
类 25 — 非法事务状态
25000非法事务状态
(INVALID TRANSACTION STATE)
invalid_transaction_state
25001活跃的 SQL 状态
(ACTIVE SQL TRANSACTION)
active_sql_transaction
25002分支事务已经激活
(BRANCH TRANSACTION ALREADY ACTIVE)
branch_transaction_already_active
25008持有的游标要求同样的隔离级别
(HELD CURSOR REQUIRES SAME ISOLATION LEVEL)
held_cursor_requires_same_isolation_level
25003对分支事务的不恰当的访问方式
(INAPPROPRIATE ACCESS MODE FOR BRANCH TRANSACTION)
inappropriate_access_mode_for_branch_transaction
25004对分支事务的不恰当的隔离级别
(INAPPROPRIATE ISOLATION LEVEL FOR BRANCH TRANSACTION)
inappropriate_isolation_level_for_branch_transaction
25005分支事务没有活跃的 SQL 事务
(NO ACTIVE SQL TRANSACTION FOR BRANCH TRANSACTION)
no_active_sql_transaction_for_branch_transaction
25006只读的 SQL 事务
(READ ONLY SQL TRANSACTION)
read_only_sql_transaction
25007不支持混和的模式和数据语句
(SCHEMA AND DATA STATEMENT MIXING NOT SUPPORTED)
schema_and_data_statement_mixing_not_supported
25P01没有活跃的 SQL 事务
(NO ACTIVE SQL TRANSACTION)
no_active_sql_transaction
25P02在失败的 SQL 事务中
(IN FAILED SQL TRANSACTION)
in_failed_sql_transaction
类 26 — 非法 SQL 语句名
26000非法 SQL 语句名
(INVALID SQL STATEMENT NAME)
invalid_sql_statement_name
类 27 — 触发的数据改变违规
27000触发的数据改变违规
(TRIGGERED DATA CHANGE VIOLATION)
triggered_data_change_violation
类 28 — 非法授权声明
28000非法授权声明
(INVALID AUTHORIZATION SPECIFICATION)
invalid_authorization_specification
类 2B — 依然存在依赖的优先级描述符
2B000依然存在依赖的优先级描述符
(DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST)
dependent_privilege_descriptors_still_exist
2BP01依赖性对象仍然存在
(DEPENDENT OBJECTS STILL EXIST)
dependent_objects_still_exist
类 2D — 非法的事务终止
2D000非法的事务终止
(INVALID TRANSACTION TERMINATION)
invalid_transaction_termination
类 2F — SQL 过程异常
2F000SQL 过程异常
(SQL ROUTINE EXCEPTION)
sql_routine_exception
2F005执行的函数没有返回语句
(FUNCTION EXECUTED NO RETURN STATEMENT)
function_executed_no_return_statement
2F002不允许修改 SQL 数据
(MODIFYING SQL DATA NOT PERMITTED)
modifying_sql_data_not_permitted
2F003企图使用禁止的 SQL 语句
(PROHIBITED SQL STATEMENT ATTEMPTED)
prohibited_sql_statement_attempted
2F004不允许读取 SQL 数据
(READING SQL DATA NOT PERMITTED)
reading_sql_data_not_permitted
类 34 — 非法游标名
34000非法游标名
(INVALID CURSOR NAME)
invalid_cursor_name
类 38 — 外部过程异常
38000外部过程异常
(EXTERNAL ROUTINE EXCEPTION)
external_routine_exception
38001不允许包含的 SQL
(CONTAINING SQL NOT PERMITTED)
containing_sql_not_permitted
38002不允许修改 SQL 数据
(MODIFYING SQL DATA NOT PERMITTED)
modifying_sql_data_not_permitted
38003企图使用禁止的 SQL 语句
(PROHIBITED SQL STATEMENT ATTEMPTED)
prohibited_sql_statement_attempted
38004不允许读取 SQL 数据
(READING SQL DATA NOT PERMITTED)
reading_sql_data_not_permitted
类 39 — 外部过程调用异常
39000外部过程调用异常
(EXTERNAL ROUTINE INVOCATION EXCEPTION)
external_routine_invocation_exception
39001返回了非法的 SQLSTATE
(INVALID SQLSTATE RETURNED)
invalid_sqlstate_returned
39004不允许 NULL
(NULL VALUE NOT ALLOWED)
null_value_not_allowed
39P01违反触发器协议
(TRIGGER PROTOCOL VIOLATED)
trigger_protocol_violated
39P02违反 SRF 协议
(SRF PROTOCOL VIOLATED)
srf_protocol_violated
类 3B — 保存点异常
3B000保存点异常
(SAVEPOINT EXCEPTION)
savepoint_exception
3B001无效的保存点声明
(INVALID SAVEPOINT SPECIFICATION)
invalid_savepoint_specification
类 3D — 非法数据库名
3D000非法数据库名
(INVALID CATALOG NAME)
invalid_catalog_name
类 3F — 非法模式名
3F000非法模式名
(INVALID SCHEMA NAME)
invalid_schema_name
类 40 — 事务回滚
40000事务回滚
(TRANSACTION ROLLBACK)
transaction_rollback
40002违反事务完整性约束
(TRANSACTION INTEGRITY CONSTRAINT VIOLATION)
transaction_integrity_constraint_violation
40001串行化失败
(SERIALIZATION FAILURE)
serialization_failure
40003不知道语句是否结束
(STATEMENT COMPLETION UNKNOWN)
statement_completion_unknown
40P01侦测到死锁
(DEADLOCK DETECTED)
deadlock_detected
类 42 — 语法错误或者违反访问规则
42000语法错误或者违反访问规则
(SYNTAX ERROR OR ACCESS RULE VIOLATION)
syntax_error_or_access_rule_violation
42601语法错误
(SYNTAX ERROR)
syntax_error
42501权限不够
(INSUFFICIENT PRIVILEGE)
insufficient_privilege
42846无法进行类型转换
(CANNOT COERCE)
cannot_coerce
42803分组错误
(GROUPING ERROR)
grouping_error
42830非法的外键
(INVALID FOREIGN KEY)
invalid_foreign_key
42602非法名字
(INVALID NAME)
invalid_name
42622名字太长
(NAME TOO LONG)
name_too_long
42939保留名字
(RESERVED NAME)
reserved_name
42804数据类型不匹配
(DATATYPE MISMATCH)
datatype_mismatch
42P18未决的数据类型
(INDETERMINATE DATATYPE)
indeterminate_datatype
42809错误的对象类型
(WRONG OBJECT TYPE)
wrong_object_type
42703未定义的字段
(UNDEFINED COLUMN)
undefined_column
42883未定义的函数
(UNDEFINED FUNCTION)
undefined_function
42P01未定义的表
(UNDEFINED TABLE)
undefined_table
42P02未定义的参数
(UNDEFINED PARAMETER)
undefined_parameter
42704未定义对象
(UNDEFINED OBJECT)
undefined_object
42701重复的字段
(DUPLICATE COLUMN)
duplicate_column
42P03重复的游标
(DUPLICATE CURSOR)
duplicate_cursor
42P04重复的数据库
(DUPLICATE DATABASE)
duplicate_database
42723重复的函数
(DUPLICATE FUNCTION)
duplicate_function
42P05重复的预备语句
(DUPLICATE PREPARED STATEMENT)
duplicate_prepared_statement
42P06重复的模式
(DUPLICATE SCHEMA)
duplicate_schema
42P07重复的表
(DUPLICATE TABLE)
duplicate_table
42712重复的别名
(DUPLICATE ALIAS)
duplicate_alias
42710重复的对象
(DUPLICATE OBJECT)
duplicate_object
42702模糊的字段
(AMBIGUOUS COLUMN)
ambiguous_column
42725模糊的函数
(AMBIGUOUS FUNCTION)
ambiguous_function
42P08模糊的参数
(AMBIGUOUS PARAMETER)
ambiguous_parameter
42P09模糊的别名
(AMBIGUOUS ALIAS)
ambiguous_alias
42P10非法字段引用
(INVALID COLUMN REFERENCE)
invalid_column_reference
42611非法字段定义
(INVALID COLUMN DEFINITION)
invalid_column_definition
42P11非法游标定义
(INVALID CURSOR DEFINITION)
invalid_cursor_definition
42P12非法数据库定义
(INVALID DATABASE DEFINITION)
invalid_database_definition
42P13非法函数定义
(INVALID FUNCTION DEFINITION)
invalid_function_definition
42P14非法预备语句定义
(INVALID PREPARED STATEMENT DEFINITION)
invalid_prepared_statement_definition
42P15非法模式定义
(INVALID SCHEMA DEFINITION)
invalid_schema_definition
42P16非法表定义
(INVALID TABLE DEFINITION)
invalid_table_definition
42P17非法对象定义
(INVALID OBJECT DEFINITION)
invalid_object_definition
类 44 — 违反 WITH CHECK 选项
44000违反 WITH CHECK 选项
(WITH CHECK OPTION VIOLATION)
with_check_option_violation
类 53 — 资源不够
53000资源不够
(INSUFFICIENT RESOURCES)
insufficient_resources
53100磁盘满
(DISK FULL)
disk_full
53200内存耗尽
(OUT OF MEMORY)
out_of_memory
53300太多连接
(TOO MANY CONNECTIONS)
too_many_connections
类 54 — 超过程序限制
54000超过程序限制
(PROGRAM LIMIT EXCEEDED)
program_limit_exceeded
54001语句太复杂
(STATEMENT TOO COMPLEX)
statement_too_complex
54011字段太多
(TOO MANY COLUMNS)
too_many_columns
54023参数太多
(TOO MANY ARGUMENTS)
too_many_arguments
类 55 — 对象不在预先要求的状态
55000对象不在预先要求的状态
(OBJECT NOT IN PREREQUISITE STATE)
object_not_in_prerequisite_state
55006对象在使用中
(OBJECT IN USE)
object_in_use
55P02无法修改运行时参数
(CANT CHANGE RUNTIME PARAM)
cant_change_runtime_param
55P03锁不可获得
(LOCK NOT AVAILABLE)
lock_not_available
类 57 — 操作者干涉
57000操作者干涉
(OPERATOR INTERVENTION)
operator_intervention
57014查询被取消
(QUERY CANCELED)
query_canceled
57P01管理员关机
(ADMIN SHUTDOWN)
admin_shutdown
57P02崩溃关机
(CRASH SHUTDOWN)
crash_shutdown
57P03现在无法连接
(CANNOT CONNECT NOW)
cannot_connect_now
类 58 — 系统错误(PostgreSQL 自己内部的错误)
58030IO 错误
(IO ERROR)
io_error
58P01未定义的文件
(UNDEFINED FILE)
undefined_file
58P02重复的文件
(DUPLICATE FILE)
duplicate_file
类 F0 — 配置文件错误
F0000配置文件错误
(CONFIG FILE ERROR)
config_file_error
F0001锁文件存在
(LOCK FILE EXISTS)
lock_file_exists
类 P0 — PL/pgSQL 错误
P0000PLPGSQL 错误
(PLPGSQL ERROR)
plpgsql_error
P0001抛出异常
(RAISE EXCEPTION)
raise_exception
P0002未找到数据
(NO DATA FOUND)
no_data_found
P0003行太多
(TOO MANY ROWS)
too_many_rows
类 XX — 内部错误
XX000内部错误
(INTERNAL ERROR)
internal_error
XX001数据损坏
(DATA CORRUPTED)
data_corrupted
XX002索引损坏
(INDEX CORRUPTED)
index_corrupted

后退首页前进
附录上一级日期/时间支持