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

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

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

22026 string_data_length_mismatch

ERROR 源码确认 参考 未实测

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

版本覆盖

速览

位串值与声明长度不匹配。固定 varbit.c 路径报告 bit string length %d does not match type bit(%d);位运算操作数有单独的长度不匹配报文。

报文

固定守卫使用以下首要文本:

守卫 首要文本
bit(n) 长度不匹配 bit string length %d does not match type bit(%d)
bit_and 操作数 cannot AND bit strings of different sizes
bit_or 操作数 cannot OR bit strings of different sizes
bitxor 操作数 cannot XOR bit strings of different sizes

报文模板

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

主消息 bit string length %d does not match type bit(%d)

来源:src/backend/utils/adt/varbit.c @ REL_18_6

主消息 cannot AND bit strings of different sizes

来源:src/backend/utils/adt/varbit.c @ REL_18_6

主消息 cannot OR bit strings of different sizes

来源:src/backend/utils/adt/varbit.c @ REL_18_6

主消息 cannot XOR bit strings of different sizes

来源:src/backend/utils/adt/varbit.c @ REL_18_6

含义

22026 覆盖精确长度的 bit(n) 边界和位运算。固定 bit() 输入路径将实际位长与声明的 bit(n) 长度比较;隐式转换会报告 bit string length %d does not match type bit(%d),显式 bit(n) 转换则会截断或补零。varbit(n) 使用不同约束:隐式值过长时使用 22001,显式转换会截断到最大长度。ANDORXOR 函数另行比较两个操作数的长度,长度不同时使用 22026。

诊断

先判断首要报文指出的是 bit(n) typmod 还是位运算符。对于 typmod 报文,比较源位长和目标精确长度,并确认边界是隐式赋值/转换还是明确要求的显式转换。varbit(n) 过长应寻找 22001;位运算报文则检查两个操作数。字符宽度和编码失败属于其他 SQLSTATE 路径。

处理

使隐式 bit(n) 值恰好达到声明长度。只有在确实需要截断或补零时才使用显式转换;位运算需要同长时,先调整两个操作数。如果 ERROR 发生在显式事务中,应先 ROLLBACK 或回滚到既有保存点再重试;自动提交可重试修正后的动作。

版本

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

来源

证据

断言

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

同类错误代码

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