# 2203G — sql_json_item_cannot_be_cast_to_target_type

> PostgreSQL SQLSTATE 2203G 的来源与诊断参考。
---

# 2203G

## 速览 {#at-a-glance}
`2203G` 是目录条件 `sql_json_item_cannot_be_cast_to_target_type`。在固定的 PostgreSQL 18.6 树中，有界搜索只在 `errcodes.txt` 找到宏定义，没有找到核心代码或 contrib 中实际发出该条件的调用。因此这是一页仅有定义边界的参考；看起来相似的 JSON 转换不能证明服务器使用了这个 SQLSTATE。

<!-- BEGIN SQLSTATE FACTS: generated by scripts/generate.py; do not edit -->

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `2203G` |
| 条件名 | `sql_json_item_cannot_be_cast_to_target_type` |
| 状态 | `有效` |
| 已知存在于 | `15.0` |
| 锁定快照 | `15.19, 16.15, 17.11, 18.6, 19beta3` |
| 宏 | `ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE` |
| 别名 | `—` |

<!-- source facts: data/errcodes/2203G.json -->
<!-- END SQLSTATE FACTS -->

## 含义 {#meaning}
固定目录给出了 SQL/JSON 条件名，但 18.6 有界源码扫描没有找到 PostgreSQL 核心代码或 contrib 的发出路径。不能把这个名字扩展成未经证实的 JSONPath、构造器、标量/数组或对象转换场景。扩展或用户自定义 `RAISE` 可以自行使用该状态码，但那不属于固定源码树的结果。

## 诊断 {#diagnosis}
保留完整 SQLSTATE、主消息/详细信息/提示、服务器日志上下文、语句，以及产生它的扩展或函数。用这些证据识别真正的发出者，不要只因文字像 JSON、普通类型输入或其他转换失败就归类为 `2203G`。

## 报文 {#messages}
本次没有为这个仅有定义的条目解析出固定 PostgreSQL 18.6 主消息、详细信息或提示模板。

## 处理 {#response}
这个仅定义条目没有 PostgreSQL 核心代码提供的、有源码依据的处置方法。先确认实际发出者，再修正该发出者的契约并重试受影响的操作。如果实际发出的是 ERROR 且处于显式事务中，先执行 `ROLLBACK` 或 `ROLLBACK TO SAVEPOINT`；自动提交模式下先修正原因，再重新提交操作。这个条件定义本身不要求重置连接。

## 版本 {#versions}
锁定目录从 PostgreSQL `15.0` 记录此条件。本次固定源码边界是 PostgreSQL 18.6 `REL_18_6`；固定源码树中未找到发出者，不能据此确定任何具体实现路径何时引入或其行为，也不能推断扩展或未来版本的行为。

## 相关 {#related}
[`2203F`](../2203f/)

## 来源 {#sources}
[`src/backend/utils/errcodes.txt#L231`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L231)

结构化[证据记录](../../data/evidence/2203g.json)保存固定定义和有界源码扫描的限制；本页没有运行观察。
