百科 / 错误代码 / Class 22 数据异常
22023 invalid_parameter_value
ERROR 已实测 详解 实测通过
- 条件名
invalid_parameter_value- 宏名称
ERRCODE_INVALID_PARAMETER_VALUE- 启用版本
- 7.4
- 状态
- 活跃
版本覆盖
速览
当点名的参数、选项、描述符或函数参数超出所属实现的值域时会使用本码。固定代表包括内置 GUC 解析、amcheck 描述符/选项、postgres_fdw 选项校验和正则选项检查;首要报文会指出归属和数值。
保留的 PostgreSQL 18.6 与 10.21 观察使用同一自动提交案例:SET work_mem = 'not-a-memory-size' 返回 SQLSTATE 22023 和 invalid value for parameter "work_mem": "not-a-memory-size";SET work_mem = '1MB' 修复,SHOW work_mem 返回 1MB。两个后端在错误和修复后均为 IDLE。该案例只绑定内置 GUC 路径,不代表所有 22023 归属;见公共 case JSON。
SET work_mem = 'not-a-memory-size';
SET work_mem = '1MB';
SHOW work_mem;
代表性报文
这些示例共用 22023,但属于不同归属:
| 归属/路径 | 代表性首要文本 |
|---|---|
| 内置 GUC 解析/检查 | parameter "%s" requires a Boolean value;invalid value for parameter "%s": "%s" |
verify_heapam |
relation cannot be null;invalid skip option — HINT:Valid skip options are "all-visible", "all-frozen", and "none". |
postgres_fdw |
invalid value for floating point option "%s": %s;invalid value for integer option "%s": %s |
| 正则选项解析器 | invalid regular expression option: "%.*s" |
报文模板
源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。
relation cannot be null
on_error_stop cannot be null
check_toast cannot be null
skip cannot be null
invalid skip option
Valid skip options are "all-visible", "all-frozen", and "none".
invalid value for floating point option "%s": %s
"%s" must be a floating point value greater than or equal to zero
invalid value for integer option "%s": %s
"%s" must be an integer value greater than zero
invalid regular expression option: "%.*s"
parameter "%s" requires a Boolean value
invalid value for parameter "%s": "%s"
来源:src/backend/utils/misc/guc.c @ REL_18_6 · src/backend/utils/misc/guc.c @ REL_18_6
%d%s%s is outside the valid range for parameter "%s" (%d%s%s .. %d%s%s)
%g%s%s is outside the valid range for parameter "%s" (%g%s%s .. %g%s%s)
含义
22023 是多个参数校验机制共用的代码,实际机制取决于报文指出的归属。内置 GUC 先把 Boolean、整数、实数、字符串或 enum 转换,检查整数/实数范围和 B/MB 或时间单位,再调用参数专属 check hook;设置上下文和权限是独立约束。verify_heapam 则检查必填非 NULL 描述符和枚举式 skip 值,postgres_fdw 解析数值/字符串选项与正值边界,regexp 函数校验 option 字母或函数参数。这些组共享 SQLSTATE,却不共享一个通用值域。
诊断
先按首要报文定位命令、函数或扩展。对于 GUC,检查参数类型、允许单位/范围以及当前设置上下文;对于扩展或函数,按其自身选项和边界处理。上面的 work_mem 只证明错误 GUC 值与带单位修复值的一条路径,不能用来推断 amcheck、postgres_fdw、regexp 或其他参数的修复。
处理
按所属参数的文档值域修正值,必要时同时修正单位和设置上下文。显式事务中的语句级 ERROR 后,必须 ROLLBACK 或 ROLLBACK TO SAVEPOINT 才能继续;自动提交客户端可重试修正后的动作。保留的自动提交案例中,同一后端在错误和修复后保持 IDLE。
可复现案例
在一次性实例上执行过的场景。其中 1 个附有可执行 SQL,正文相应小节里给出。
invalid_work_mem_parameter PG 10 / 18 有 SQL
前置条件
- A runner-owned disposable target is provisioned.
触发
Set the built-in work_mem parameter to the invalid memory-size text not-a-memory-size.
断言
- SQLSTATE is 22023 with the invalid work_mem value diagnostic
- The failed autocommit session remains IDLE
- A valid work_mem value is accepted in the same session and SHOW reports 1MB
处置
Set work_mem to a valid memory value in the same session; do not interpret a parameter-value error as a connection failure.
清理
Close the runner connection and drop the case schema with an owner connection.
版本
锁定目录从 7.4 起记录该条件;固定源码覆盖 PostgreSQL 18.6。保留的观察覆盖 PostgreSQL 18.6 与 10.21 上述 work_mem 案例。
来源
- 上游源码 contrib/amcheck/verify_heapam.c 第 271 行
- 上游源码 src/backend/utils/errcodes.txt 第 185 行
- 上游源码 src/backend/utils/misc/guc.c 第 3342 行
- 上游源码 src/backend/utils/misc/guc.c 第 6804 行
- 上游源码 src/backend/utils/misc/guc.c 第 3129 行
- 上游源码 src/backend/utils/misc/guc.c 第 87 行
- 上游源码 contrib/postgres_fdw/option.c 第 149 行
- 上游源码 src/backend/utils/adt/regexp.c 第 443 行
- 核验材料 verify/cases/22023/snippets.json
证据
断言
每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。
-
22023 is invalid_parameter_value in SQLSTATE Class 22
-
Fixed PostgreSQL 18.6 representatives bind owner-specific NULL/option/range checks and built-in GUC parse/range/unit/context/check-hook paths.
-
The locked catalogue records 22023 from 7.4 without proving an exact implementation introduction date.
-
The retained invalid_work_mem_parameter case passed on PostgreSQL 18.6 and 10.21 with the observed message and repair described on the page.
运行记录
| 目标 | 服务器版本 | 结果 | 覆盖案例 |
|---|---|---|---|
| latest | 18.6 (Homebrew) | passed | invalid_work_mem_parameter |
| pg10 | 10.21 (Debian 10.21-1.pgdg90+1) | passed | invalid_work_mem_parameter |
同类错误代码
Class 22 数据异常 下的其他成员。
22000data_exception22001string_data_right_truncation22002null_value_no_indicator_parameter22003numeric_value_out_of_range22004null_value_not_allowed22005error_in_assignment22007invalid_datetime_format22008datetime_field_overflow22009invalid_time_zone_displacement_value2200Bescape_character_conflict2200Cinvalid_use_of_escape_character2200Dinvalid_escape_octet2200Fzero_length_character_string2200Gmost_specific_type_mismatch2200Hsequence_generator_limit_exceeded2200Lnot_an_xml_document2200Minvalid_xml_document2200Ninvalid_xml_content2200Sinvalid_xml_comment2200Tinvalid_xml_processing_instruction22010invalid_indicator_parameter_value22011substring_error22012division_by_zero22013invalid_preceding_or_following_size22014invalid_argument_for_ntile_function22015interval_field_overflow22016invalid_argument_for_nth_value_function22018invalid_character_value_for_cast22019invalid_escape_character2201Binvalid_regular_expression2201Einvalid_argument_for_logarithm2201Finvalid_argument_for_power_function2201Ginvalid_argument_for_width_bucket_function2201Winvalid_row_count_in_limit_clause2201Xinvalid_row_count_in_result_offset_clause22021character_not_in_repertoire22022indicator_overflow22024unterminated_c_string22025invalid_escape_sequence22026string_data_length_mismatch22027trim_error2202Earray_subscript_error2202Ginvalid_tablesample_repeat2202Hinvalid_tablesample_argument22030duplicate_json_object_key_value22031invalid_argument_for_sql_json_datetime_function22032invalid_json_text22033invalid_sql_json_subscript22034more_than_one_sql_json_item22035no_sql_json_item22036non_numeric_sql_json_item22037non_unique_keys_in_a_json_object22038singleton_sql_json_item_required22039sql_json_array_not_found2203Asql_json_member_not_found2203Bsql_json_number_not_found2203Csql_json_object_not_found2203Dtoo_many_json_array_elements2203Etoo_many_json_object_members2203Fsql_json_scalar_required2203Gsql_json_item_cannot_be_cast_to_target_type22P01floating_point_exception22P02invalid_text_representation22P03invalid_binary_representation22P04bad_copy_file_format22P05untranslatable_character22P06nonstandard_use_of_escape_character