将1
整数保存为ENUM('1', '0')
时,请注意一些奇怪的事情。该值存储为0。
UPDATE table SET `somefield` = 1 WHERE `id` = 1;
SELECT id, `somefield` WHERE id = 1;
id, somefield
1, 0
有什么方法可以让它发挥作用吗?我宁愿不修改数据库。
此外,非常感谢有关为何发生这种情况以及未转换字段的任何信息
答案 0 :(得分:2)
当为枚举的更新值提供整数而不是字符串时,它被解释为枚举值的索引,而不是值。
与所有SQL一样,枚举使用基于1的索引,因此对于你的枚举索引1是'1'
而索引2是'0'
。还有别的错误。
这意味着你的更新语句应该导致'1'
,而不是零,所以你的表没有像你说的那样定义,或者你的更新语句不像你说的那样。
见SQLFiddle证明这一点。
答案 1 :(得分:0)
DBCommand
需要将值指定为字符串。