DBAtlas · Атлас эксплуатации баз данных

22026: string_data_length_mismatch

PostgreSQL

Что это значит?

Длина битовой строки не соответствует фиксированной длине, требуемой операцией. В PostgreSQL чаще всего появляется, когда битовая строка другой длины записывается в тип фиксированной длины bit(n) или когда побитовые AND/OR/XOR применяются к битовым строкам разной длины.

Почему возникает?

Запись битовой строки короче/длиннее n в столбец bit(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 →

Ещё по этой СУБД