У мене була та ж проблема, із полем бази даних типу "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'.