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

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.2 已结束支持。 请参阅 当前版本手册.

附录 A. PostgreSQL错误代码

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

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

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

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

表 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
01004STRING DATA RIGHT TRUNCATIONstring_data_right_truncation
01P01已弃用的特性deprecated_feature
类 02 — 无数据(按 SQL 标准这也是一个警告类别)
02000无数据no_data
02001没有更多动态结果集返回no_additional_dynamic_result_sets_returned
类 03 — SQL 语句尚未完成
03000SQL 语句尚未完成sql_statement_not_yet_complete
类 08 — 连接异常
08000连接异常connection_exception
08003连接不存在connection_does_not_exist
08006连接失败connection_failure
08001SQL 客户端无法建立 SQL 连接sqlclient_unable_to_establish_sqlconnection
08004SQL 服务器拒绝建立 SQL 连接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
类 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
2201F幂函数参数无效invalid_argument_for_power_function
2201GWIDTH_BUCKET 函数参数无效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
22020INVALID LIMIT VALUEinvalid_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
22004NULL VALUE NOT ALLOWEDnull_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未终结的 C 字符串unterminated_c_string
2200F零长度字符串zero_length_character_string
22P01浮点异常floating_point_exception
22P02无效的文本表示形式invalid_text_representation
22P03无效的二进制表示形式invalid_binary_representation
22P04错误的 COPY 文件格式bad_copy_file_format
22P05不可翻译的字符untranslatable_character
类 23 — 违反完整性约束
23000违反完整性约束integrity_constraint_violation
23001违反限制restrict_violation
23502违反非空约束not_null_violation
23503违反外键约束foreign_key_violation
23505违反唯一约束unique_violation
23514违反检查约束check_violation
类 24 — 无效的游标状态
24000无效的游标状态invalid_cursor_state
类 25 — 无效的事务状态
25000无效的事务状态invalid_transaction_state
25001活跃 SQL 事务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分支事务没有活跃 SQL 事务no_active_sql_transaction_for_branch_transaction
25006只读 SQL 事务read_only_sql_transaction
25007不支持模式和数据语句混合schema_and_data_statement_mixing_not_supported
25P01没有活跃 SQL 事务no_active_sql_transaction
25P02在失败的 SQL 事务中in_failed_sql_transaction
类 26 — 无效的 SQL 语句名称
26000无效的 SQL 语句名称invalid_sql_statement_name
类 27 — 触发数据更改违反
27000触发数据更改违反triggered_data_change_violation
类 28 — 无效的授权规约
28000无效的授权规约invalid_authorization_specification
类 2B — 仍存在依赖的特权描述符
2B000仍存在依赖的特权描述符dependent_privilege_descriptors_still_exist
2BP01仍存在依赖的对象dependent_objects_still_exist
类 2D — 无效的事务终止
2D000无效的事务终止invalid_transaction_termination
类 2F — SQL 例程异常
2F000SQL 例程异常sql_routine_exception
2F005函数未执行 RETURN 语句function_executed_no_return_statement
2F002MODIFYING SQL DATA NOT PERMITTEDmodifying_sql_data_not_permitted
2F003PROHIBITED SQL STATEMENT ATTEMPTEDprohibited_sql_statement_attempted
2F004READING SQL DATA NOT PERMITTEDreading_sql_data_not_permitted
类 34 — 无效的游标名称
34000无效的游标名称invalid_cursor_name
类 38 — 外部例程异常
38000外部例程异常external_routine_exception
38001不允许包含 SQLcontaining_sql_not_permitted
38002不允许修改 SQL 数据modifying_sql_data_not_permitted
38003试图执行被禁止的 SQL 语句prohibited_sql_statement_attempted
38004不允许读取 SQL 数据reading_sql_data_not_permitted
类 39 — 外部例程调用异常
39000外部例程调用异常external_routine_invocation_exception
39001返回了无效的 SQLSTATEinvalid_sqlstate_returned
39004不允许空值null_value_not_allowed
39P01违反触发器协议trigger_protocol_violated
39P02违反 SRF 协议srf_protocol_violated
类 3B — 保存点异常
3B000保存点异常savepoint_exception
3B001无效的保存点规约invalid_savepoint_specification
类 3D — 无效的目录名称
3D000无效的目录名称invalid_catalog_name
类 3F — 无效的模式名称
3F000无效的模式名称invalid_schema_name
类 40 — 事务回滚
40000事务回滚transaction_rollback
40002事务违反完整性约束transaction_integrity_constraint_violation
40001序列化失败serialization_failure
40003语句完成状态未知statement_completion_unknown
40P01检测到死锁deadlock_detected
类 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_prepared_statement
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_prepared_statement_definition
42P15无效的模式定义invalid_schema_definition
42P16无效的表定义invalid_table_definition
42P17无效的对象定义invalid_object_definition
类 44 — 违反 WITH CHECK 选项
44000违反 WITH CHECK 选项with_check_option_violation
类 53 — 资源不足
53000资源不足insufficient_resources
53100磁盘已满disk_full
53200内存不足out_of_memory
53300连接过多too_many_connections
类 54 — 超出程序限制
54000超出程序限制program_limit_exceeded
54001语句过于复杂statement_too_complex
54011列太多too_many_columns
54023参数太多too_many_arguments
类 55 — 对象不处于先决状态
55000对象不处于先决状态object_not_in_prerequisite_state
55006对象正在使用中object_in_use
55P02无法更改运行时参数cant_change_runtime_param
55P03锁不可用lock_not_available
类 57 — 操作员干预
57000操作员干预operator_intervention
57014查询被取消query_canceled
57P01管理员关闭admin_shutdown
57P02崩溃关闭crash_shutdown
57P03现在无法连接cannot_connect_now
类 58 — 系统错误(PostgreSQL 自身之外的错误)
58030IO 错误io_error
58P01未定义的文件undefined_file
58P02重复的文件duplicate_file
类 F0 — 配置文件错误
F0000配置文件错误config_file_error
F0001锁文件已存在lock_file_exists
类 P0 — PL/pgSQL 错误
P0000PL/pgSQL 错误plpgsql_error
P0001RAISE 异常raise_exception
P0002未找到数据no_data_found
P0003行太多too_many_rows
类 XX — 内部错误
XX000内部错误internal_error
XX001数据损坏data_corrupted
XX002索引损坏index_corrupted

报告文档问题

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