跳转到主要内容

2203A — sql_json_member_not_found

PostgreSQL SQLSTATE 2203A 的来源与诊断参考。

2203A

速览

无法从当前 JSON 项中读取指定的对象成员。固定 jsonpath 成员访问区分键不存在与接收项不是对象。

字段
SQLSTATE 2203A
条件名 sql_json_member_not_found
状态 有效
已知存在于 12.0
锁定快照 12.22, 13.23, 14.24, 15.19, 16.15, 17.11, 18.6, 19beta3
ERRCODE_SQL_JSON_MEMBER_NOT_FOUND
别名

报文

代表性首要报文如下:

触发条件 首要报文
对象中没有指定键 JSON object does not contain key "%s"
成员访问器收到非对象 jsonpath member accessor can only be applied to an object

含义

jpiKey 分支会在当前 JSON 对象中查找请求的键。在会抛错的上下文中,键不存在会报告 2203A;标量或其他非对象接收项也使用本码,但首要报文不同。忽略结构错误时可以跳过这种不匹配;非抛错上下文则会把路径错误结果交给调用方处理。这是具名成员边界;通配成员访问和 .keyvalue() 使用只接受对象的 2203C 路径。

诊断

保留请求的键、成员访问器前一步收到的项,以及路径模式。键不存在可能是文档形状问题;非对象接收项则表示路径到达了错误类型。没有读取首要报文时,不要把成员缺失归为 22035 无项,或把通配/对象方法不匹配归为 2203C。

处理

修正键名,或按文档形状规范化并显式分支。只有当成员缺失确实是预期输入时,才使用路径文档规定的 lax 或错误处理行为。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交可重试修正后的动作。

版本

锁定目录从 12.0 起记录该条件;固定的具名成员 检查条件来自 PostgreSQL 18.6。本页未声称有自然运行观察。

220392203C22035

来源

具名成员查找、键缺失、非对象和结构错误分支见 jsonpath_exec.c#L1012-1055。共享 strict/lax 与抛出/返回宏见 jsonpath_exec.c#L235-249。结构化证据记录绑定两条准确首要报文;本页未运行自然案例。