22023 — invalid_parameter_value
22023
速览
当点名的参数、选项、描述符或函数参数超出所属实现的值域时会使用本码。固定代表包括内置 GUC 解析、amcheck 描述符/选项、postgres_fdw 选项校验和正则选项检查;首要报文会指出归属和数值。
| 字段 | 值 |
|---|---|
| SQLSTATE | 22023 |
| 条件名 | invalid_parameter_value |
| 状态 | 有效 |
| 已知存在于 | 7.4 |
| 锁定快照 | 9.0.23, 9.1.24, 9.2.24, 9.3.25, 9.4.26, 9.5.25, 9.6.24, 10.23, 11.22, 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3 |
| 宏 | ERRCODE_INVALID_PARAMETER_VALUE |
| 别名 | — |
保留的 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。
代表性报文
这些示例共用 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" |
含义
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。
版本
锁定目录从 7.4 起记录该条件;固定源码覆盖 PostgreSQL 18.6。保留的观察覆盖 PostgreSQL 18.6 与 10.21 上述 work_mem 案例。
相关
来源
内置 GUC 转换/范围/check-hook 路径见 src/backend/utils/misc/guc.c#L3129-3320 与 #L6804-6990;单位表见 #L87-181,设置上下文处理见 #L3342-3430,另见 contrib/amcheck/verify_heapam.c#L271-303、contrib/postgres_fdw/option.c#L149-185、src/backend/utils/adt/regexp.c#L443-446。结构化证据记录保留确切报文、运行摘要和各归属边界。