Tôi gặp vấn đề tương tự, với trường cơ sở dữ liệu có kiểu "SET" là kiểu enum.
Tôi đã cố gắng thêm một giá trị không có trong danh sách đó.
Giá trị tôi đã cố gắng thêm có giá trị thập phân 256, nhưng danh sách enum chỉ có 8 giá trị.
1: 1 -> A
2: 2 -> B
3: 4 -> C
4: 8 -> D
5: 16 -> E
6: 32 -> F
7: 64 -> G
8: 128 -> H
Vì vậy, tôi chỉ cần thêm giá trị bổ sung vào trường.
Đọc mục tài liệu này đã giúp tôi hiểu vấn đề.
MySQL lưu trữ các giá trị SET bằng số, với bit bậc thấp của giá trị được lưu trữ tương ứng với thành viên được đặt đầu tiên. Nếu bạn truy xuất giá trị SET trong ngữ cảnh số, giá trị được truy xuất có các bit được đặt tương ứng với các thành viên đã đặt tạo nên giá trị cột. Ví dụ: bạn có thể truy xuất các giá trị số từ một cột SET như sau:
mysql> SELECT set_col+0 FROM tbl_name; If a number is stored into a
Nếu một số được lưu trữ trong một cột SET, các bit được đặt trong biểu diễn nhị phân của số đó sẽ xác định các thành viên đã đặt trong giá trị cột. Đối với một cột được chỉ định là SET ('a', 'b', 'c', 'd'), các phần tử có các giá trị thập phân và nhị phân sau.
SET Member Decimal Value Binary Value
'a' 1 0001
'b' 2 0010
'c' 4 0100
'd' 8 1000
Nếu bạn gán giá trị 9 cho cột này, tức là 1001 trong hệ nhị phân, vì vậy các thành viên giá trị SET đầu tiên và thứ tư 'a' và 'd' được chọn và giá trị kết quả là 'a, d'.