Ho avuto lo stesso problema, con un campo database con tipo "SET" che è un tipo enum.
Ho provato ad aggiungere un valore che non era in quella lista.
Il valore che ho provato ad aggiungere aveva il valore decimale 256, ma l'elenco enum aveva solo 8 valori.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Quindi ho dovuto solo aggiungere il valore aggiuntivo al campo.
La lettura di questa voce di documentazione mi ha aiutato a capire il problema.
MySQL memorizza i valori SET numericamente, con il bit di ordine inferiore del valore memorizzato corrispondente al primo membro del set. Se si recupera un valore SET in un contesto numerico, il valore recuperato ha set di bit corrispondenti ai membri del set che costituiscono il valore della colonna. Ad esempio, puoi recuperare valori numerici da una colonna SET come questa:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Se un numero viene memorizzato in una colonna SET, i bit impostati nella rappresentazione binaria del numero determinano i membri del set nel valore della colonna. Per una colonna specificata come SET ('a', 'b', 'c', 'd'), i membri hanno i seguenti valori decimali e binari.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Se si assegna un valore di 9 a questa colonna, questo è 1001 in binario, quindi il primo e il quarto membro del valore SET "a" e "d" vengono selezionati e il valore risultante è "a, d".