选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 错误代码 / Class 22 数据异常

22023 invalid_parameter_value

ERROR 已实测 详解 实测通过

类别
Class 22 数据异常
严重等级
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 22023invalid 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 valueinvalid value for parameter "%s": "%s"
verify_heapam relation cannot be nullinvalid skip option — HINT:Valid skip options are "all-visible", "all-frozen", and "none".
postgres_fdw invalid value for floating point option "%s": %sinvalid value for integer option "%s": %s
正则选项解析器 invalid regular expression option: "%.*s"

报文模板

源码里的格式串,不是某一次运行的输出。%s 之类是占位符,实际报文会填入对象名与取值。适用范围一栏是核验时留下的原始英文记录,未经翻译。

主消息 relation cannot be null

来源:contrib/amcheck/verify_heapam.c @ REL_18_6

主消息 on_error_stop cannot be null

来源:contrib/amcheck/verify_heapam.c @ REL_18_6

主消息 check_toast cannot be null

来源:contrib/amcheck/verify_heapam.c @ REL_18_6

主消息 skip cannot be null

来源:contrib/amcheck/verify_heapam.c @ REL_18_6

主消息 invalid skip option
HINT Valid skip options are "all-visible", "all-frozen", and "none".

来源:contrib/amcheck/verify_heapam.c @ REL_18_6

主消息 invalid value for floating point option "%s": %s

来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 "%s" must be a floating point value greater than or equal to zero

来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 invalid value for integer option "%s": %s

来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 "%s" must be an integer value greater than zero

来源:contrib/postgres_fdw/option.c @ REL_18_6

主消息 invalid regular expression option: "%.*s"

来源:src/backend/utils/adt/regexp.c @ REL_18_6

主消息 parameter "%s" requires a Boolean value

来源:src/backend/utils/misc/guc.c @ REL_18_6

主消息 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)

来源:src/backend/utils/misc/guc.c @ REL_18_6

主消息 %g%s%s is outside the valid range for parameter "%s" (%g%s%s .. %g%s%s)

来源:src/backend/utils/misc/guc.c @ REL_18_6

含义

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 案例。

来源

证据

断言

每条断言都写明了是怎么核实的,以及它不覆盖什么。这一层是核验时留下的原始英文记录,照原样呈现,未经翻译。

运行记录

目标服务器版本结果覆盖案例
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 数据异常 下的其他成员。