DBAtlas · 数据库运维图谱

22026: string_data_length_mismatch

PostgreSQL

含义

位串的长度与操作所要求的固定长度不匹配。在 PostgreSQL 中最常见于将不同长度的位串写入定长 bit(n) 类型,或对不同长度的位串执行按位 AND/OR/XOR。

原因

向 bit(n) 列写入短于/长于 n 的位串(例如将 B'101' 写入 bit(4) 列:'bit string length 3 does not match type bit(4)'),或对不同长度的位串使用 &、|、#('cannot AND bit strings of different sizes')。它与文本或字符编码无关;char(n)/varchar(n) 的值过长引发的是 22001。

解决方法

将值调整为目标长度:使用显式类型转换(B'101'::bit(4) 会在右侧补零并截断多余部分),或在长度可变时将列定义为 bit varying(n)。在按位运算之前将操作数转换为相同长度;用 length() 检查长度。

在 DBAtlas 中打开 →

同一数据库的其他条目