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

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

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

22021 character_not_in_repertoire

ERROR 源码确认 参考 未实测

类别
Class 22 数据异常
严重等级
ERROR
条件名
character_not_in_repertoire
宏名称
ERRCODE_CHARACTER_NOT_IN_REPERTOIRE
启用版本
7.4
状态
活跃

版本覆盖

速览

源字节序列对于正在检查的编码无效。固定转换路径报告 invalid byte sequence for encoding "%s": %s,并以十六进制列出违规字节。

含义

report_invalid_encoding 计算不完整或无效多字节序列的长度,使用源编码名和十六进制字节发出 22021。有效的源字符若在目标编码中没有等价表示,则走独立的 22P05 untranslatable-character 路径;这不表示源字节本身损坏。

报文模板

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

主消息 invalid byte sequence for encoding "%s": %s

来源:src/backend/utils/mb/mbutils.c @ REL_18_6

诊断

在改动前记录源/目标编码、客户端/数据库设置以及原始字节。无效源字节指向输入或边界解码问题;可读但不可表示的字符指向目标编码的字符表示范围。不要把 SQL_ASCII 当作无条件修复:接受任意字节可能只是推迟或隐藏编码边界缺陷。

处理

修复生产端或编码边界,或在保留违规字节的前提下按明确的丢弃/拒绝策略显式转换。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交可重试修正后的输入。

版本

锁定目录从 7.4 起记录该条件;本页固定转换路径为 PostgreSQL 18.6。未声称本页有自然运行观察。

来源

证据

断言

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

  • 22021 is character_not_in_repertoire in SQLSTATE Class 22

    核实方式Read the fixed errcodes row and macro.

    来源src/backend/utils/errcodes.txt

  • Fixed PostgreSQL 18.6 encoding helpers distinguish invalid source bytes (22021) from a valid source character with no destination equivalent (22P05).

    核实方式Read complete source contexts for the representative guards.

    不覆盖Source confirmation is not a natural runtime observation.

    来源src/backend/utils/mb/mbutils.c · src/backend/utils/mb/mbutils.c

  • The locked catalogue records 22021 from 7.4 without proving an exact implementation introduction date.

    核实方式Use catalogue presence and history boundaries.

    来源src/backend/utils/errcodes.txt

同类错误代码

Class 22 数据异常 下的其他成员。