Ich hatte das gleiche Problem mit einem Datenbankfeld vom Typ "SET", das ein Aufzählungstyp ist.
Ich habe versucht, einen Wert hinzuzufügen, der nicht in dieser Liste enthalten ist.
Der Wert, den ich hinzufügen wollte, hatte den Dezimalwert 256, aber die Aufzählungsliste hatte nur 8 Werte.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Also musste ich dem Feld nur den zusätzlichen Wert hinzufügen.
Das Lesen dieses Dokumentationseintrags hat mir geholfen, das Problem zu verstehen.
MySQL speichert SET-Werte numerisch, wobei das niederwertige Bit des gespeicherten Werts dem ersten gesetzten Element entspricht. Wenn Sie einen SET-Wert in einem numerischen Kontext abrufen, werden für den abgerufenen Wert Bits gesetzt, die den gesetzten Elementen entsprechen, aus denen der Spaltenwert besteht. Sie können beispielsweise numerische Werte aus einer SET-Spalte wie folgt abrufen:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Wenn eine Zahl in einer SET-Spalte gespeichert ist, bestimmen die Bits, die in der binären Darstellung der Zahl gesetzt sind, die gesetzten Elemente im Spaltenwert. Für eine als SET angegebene Spalte ('a', 'b', 'c', 'd') haben die Elemente die folgenden Dezimal- und Binärwerte.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Wenn Sie dieser Spalte einen Wert von 9 zuweisen, dh 1001 in Binärform, werden die ersten und vierten SET-Wertelemente 'a' und 'd' ausgewählt und der resultierende Wert ist 'a, d'.