在将 1
作为整数保存到 ENUM('1', '0')
时请注意一些奇怪的事情。该值存储为 0。
UPDATE table SET `somefield` = 1 WHERE `id` = 1;
SELECT id, `somefield` WHERE id = 1;
id, somefield
1, 0
有什么办法可以让它发挥作用吗?我宁愿不修改数据库。
此外,非常感谢任何有关为什么会发生这种情况以及该字段未转换的信息
最佳答案
当您为枚举的更新值提供整数而不是字符串时,它被解释为枚举值的索引,而不是值。 p>
像所有 SQL 一样,枚举使用基于 1 的索引,因此对于您的枚举,索引 1 是 '1'
,索引 2 是 '0'
。任何其他都是错误。
这意味着您的更新语句的结果应该是 '1'
,而不是零,因此要么您的表没有按照您所说的那样定义,要么您的更新语句不像您所说的那样。
查看此 SQLFiddle证明这一点。
关于mysql - 将 1 作为数字保存到 ENUM ('1' ,'0' ) 字段设置值为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969668/