22026: string_data_length_mismatch
PostgreSQLQue signifie cette erreur ?
La longueur d'une chaîne de bits ne correspond pas à la longueur fixe exigée par l'opération. Dans PostgreSQL, cela apparaît le plus souvent lorsqu'une chaîne de bits d'une autre longueur est écrite dans un type bit(n) de longueur fixe, ou lorsqu'un AND/OR/XOR bit à bit est appliqué à des chaînes de bits de longueurs différentes.
Cause
Écriture d'une chaîne de bits plus courte/plus longue que n dans une colonne bit(n) (par ex. B'101' dans une colonne bit(4) : 'bit string length 3 does not match type bit(4)'), ou application de &, |, # à des chaînes de bits de longueurs différentes ('cannot AND bit strings of different sizes'). Ce n'est pas lié au texte ni à l'encodage des caractères ; une valeur trop longue pour char(n)/varchar(n) lève plutôt 22001.
Comment la corriger
Amenez la valeur à la longueur cible : utilisez un cast explicite (B'101'::bit(4) complète avec des zéros à droite et tronque l'excédent), ou définissez la colonne en bit varying(n) si la longueur peut varier. Castez les opérandes à la même longueur avant les opérations bit à bit ; vérifiez la longueur avec length().