22026: string_data_length_mismatch
PostgreSQLWas bedeutet das?
Die Länge eines Bitstrings entspricht nicht der von der Operation geforderten festen Länge. In PostgreSQL tritt das meist auf, wenn ein Bitstring anderer Länge in einen bit(n)-Typ fester Länge geschrieben wird oder bitweises AND/OR/XOR auf Bitstrings unterschiedlicher Länge angewendet wird.
Ursache
Schreiben eines Bitstrings, der kürzer/länger als n ist, in eine bit(n)-Spalte (z. B. B'101' in eine bit(4)-Spalte: 'bit string length 3 does not match type bit(4)'), oder Anwenden von &, |, # auf Bitstrings unterschiedlicher Länge ('cannot AND bit strings of different sizes'). Die Ursache liegt nicht in Text oder Zeichenkodierung; ein zu langer Wert für char(n)/varchar(n) löst stattdessen 22001 aus.
Lösung
Bringe den Wert auf die Ziellänge: Nutze einen expliziten Cast (B'101'::bit(4) füllt rechts mit Nullen auf und schneidet Überzähliges ab) oder definiere die Spalte als bit varying(n), wenn die Länge variieren darf. Caste die Operanden vor bitweisen Operationen auf dieselbe Länge; prüfe die Länge mit length().