我遇到了同样的问题,数据库字段类型为“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'。