J'ai eu le même problème, avec un champ de base de données avec le type "SET" qui est un type enum.
J'ai essayé d'ajouter une valeur qui ne figurait pas dans cette liste.
La valeur que j'ai essayé d'ajouter avait la valeur décimale 256, mais la liste d'énumération n'avait que 8 valeurs.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Je devais donc juste ajouter la valeur supplémentaire au champ.
La lecture de cette entrée de documentation m'a aidé à comprendre le problème.
MySQL stocke les valeurs SET numériquement, le bit de poids faible de la valeur stockée correspondant au premier membre de l'ensemble. Si vous récupérez une valeur SET dans un contexte numérique, la valeur récupérée a des bits définis correspondant aux membres de l'ensemble qui composent la valeur de colonne. Par exemple, vous pouvez récupérer des valeurs numériques à partir d'une colonne SET comme ceci:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Si un nombre est stocké dans une colonne SET, les bits définis dans la représentation binaire du nombre déterminent les membres de l'ensemble dans la valeur de colonne. Pour une colonne spécifiée comme SET ('a', 'b', 'c', 'd'), les membres ont les valeurs décimales et binaires suivantes.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Si vous affectez une valeur de 9 à cette colonne, c'est-à-dire 1001 en binaire, les premier et quatrième membres de valeur SET «a» et «d» sont sélectionnés et la valeur résultante est «a, d».