Miałem ten sam problem, z polem bazy danych typu „SET”, które jest typem wyliczenia.
Próbowałem dodać wartość, której nie było na tej liście.
Wartość, którą próbowałem dodać, miała wartość dziesiętną 256, ale lista wyliczeń miała tylko 8 wartości.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Musiałem więc po prostu dodać dodatkową wartość do pola.
Przeczytanie tego wpisu dokumentacji pomogło mi zrozumieć problem.
MySQL przechowuje wartości SET w postaci numerycznej, przy czym najmniejszy bit przechowywanej wartości odpowiada pierwszemu elementowi zestawu. Jeśli pobierasz wartość SET w kontekście liczbowym, pobrana wartość ma ustawione bity odpowiadające elementom zestawu, które tworzą wartość kolumny. Na przykład możesz pobrać wartości liczbowe z kolumny SET w następujący sposób:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Jeśli liczba jest przechowywana w kolumnie SET, bity ustawione w binarnej reprezentacji liczby określają elementy zestawu w wartości kolumny. W przypadku kolumny określonej jako SET („a”, „b”, „c”, „d”) składowe mają następujące wartości dziesiętne i binarne.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Jeśli przypiszesz do tej kolumny wartość 9, czyli 1001 w systemie dwójkowym, wybierane są pierwsze i czwarte elementy składowe wartości SET, „a” i „d”, a wynikowa wartość to „a, d”.