У меня была та же проблема с полем базы данных типа «SET», которое является типом перечисления.
Я попытался добавить значение, которого не было в этом списке.
Значение, которое я пытался добавить, имело десятичное значение 256, но в списке перечислений было только 8 значений.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Поэтому мне просто нужно было добавить дополнительное значение в поле.
Чтение этой записи в документации помогло мне понять проблему.
MySQL сохраняет значения SET в числовом виде, при этом младший бит сохраненного значения соответствует первому члену набора. Если вы получаете значение SET в числовом контексте, полученное значение имеет набор битов, соответствующих элементам набора, которые составляют значение столбца. Например, вы можете получить числовые значения из столбца SET следующим образом:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Если число хранится в столбце SET, биты, которые установлены в двоичном представлении числа, определяют элементы набора в значении столбца. Для столбца, указанного как SET ('a', 'b', 'c', 'd'), члены имеют следующие десятичные и двоичные значения.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Если вы присвоите этому столбцу значение 9, то это будет 1001 в двоичном формате, поэтому будут выбраны первый и четвертый члены значения SET «a» и «d», и результирующее значение будет «a, d».