# 01004 — string_data_right_truncation

> PostgreSQL SQLSTATE 01004 表示警告类别的字符串右截断条件；固定核心扫描没有找到发射路径。
---

# 01004 — string_data_right_truncation

## 速览 {#at-a-glance}

`01004` 的名称描述作为警告报告的右截断。没有解析出 18.6 核心与 contrib 报告组，因此不能指定某个转换、编码、客户端或消息。

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

| 字段 | 值 |
| --- | --- |
| SQLSTATE | `01004` |
| 条件名 | `string_data_right_truncation` |
| 状态 | `有效` |
| 已知存在于 | `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_WARNING_STRING_DATA_RIGHT_TRUNCATION` |
| 别名 | `—` |

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

## 含义 {#meaning}

定义名称描述作为 warning 条件的右截断。没有解析出的调用组时，实际截断行为、数据是否保留以及来源仍未知。

## 消息与诊断 {#messages}

没有解析出 18.6 消息变体。应保留值和列上下文、声明长度与接收长度（若有）、编码、来源版本及完整诊断。

## 诊断 {#diagnosis}

定位实际发出代码，并按其长度和编码规则比较传输值。区分保留截断值的 warning 与拒绝语句的 error；SQLSTATE 本身不能决定这种行为。

## 处理 {#response}

按来源实现支持的长度或编码调整，并验证数据是否被有意截断。信息可能已经丢失时，不要原样重试输入。

## 版本 {#versions}

`01004` 在锁定目录 9.0.23 至 18.6 以及 19 Beta 3 中存在，`known_present_by` 为 7.4。现有证据确认目录事实，不确认当前核心发射路径。

## 相关 {#related}

[`01003`](../01003/) 涉及 NULL 消除；[`01008`](../01008/) 涉及零位填充；[`22001`](../22001/) 是独立的错误类别字符串截断。

## 来源 {#sources}

- [`errcodes.txt`](https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt#L90) — 定义，SHA-256 `6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba`.
- [结构化证据](../../data/evidence/01004.json) — 固定来源、消息和运行边界。
