【发布时间】:2012-11-08 15:58:45
【问题描述】:
我有一个非常奇怪的问题,这让我整天发疯。我有一个包含几列的简单 MySQL 表。一列是 int(11) NULL。当我更新它的值时,它按预期工作。但是,当我第二次更新它的值时,它被分配了“0”值。
我已经在我的 MySQL 5.1.58-1ubuntu1 和其他 MySQL 5.0.96-community 上测试了相同的行为,并且两者的行为完全相同。所以这显然不是一个版本的 MySQL 的问题。
我很难解释,但我附上了 2 个屏幕截图,可以更好地告诉你哪里更好。
第一个屏幕截图是我正在更新的表格的结构:
这里显示了正在执行的 SQL 查询,您可以在其中看到,第一次更新是正确的,第二次在“invoice_number”列中无故产生“0”值:
我是否忽略了一些明显的东西?它真的让我发疯,因为它对我来说没有任何意义......
提前感谢您的任何帮助...
编辑:我尝试在我的查询中只使用数字,这是结果(对我来说也很奇怪):
【问题讨论】:
-
+1 表示奇怪的问题,这让我整天发疯。我知道这种感觉
-
为什么要在代码中指定字符串?
'35'是一个字符串,35是一个数字。你为什么不做= 35 WHERE id = 55? -
不要不对数字列使用字符文字
'55。'55'不是数字,而是字符串。你应该使用55(如果奇怪源于一些奇怪的隐式类型转换,我不会感到惊讶) -
您似乎在使用 phpMyAdmin 或类似工具。您是否从第二个屏幕截图底部的该文本区域运行了所有查询?如果是这样,可能是查询正在被缓存并且您从缓存中获取结果(这意味着您的工具中存在错误,而不是 MySQL)。您是否尝试过分别运行这些查询,一次一个?
-
@Dems 我同意,但不是服务器自动尝试将字符串解析为数字吗?