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