在我的Java servlet中,每次发出某个请求时,我都会生成一个64位整数。然后我向两个方向发送这个:
1)作为对HTTP Get调用者的JSON编码回复
2)通过PHP脚本进入MySQL数据库
1)这样工作:数字被添加到ArrayList(通过Long.toString())。然后通过Gson库将此列表转换为JSON字符串。然后使用HTTP响应的printwriter打印它。
2)运行PHP脚本,并将long参数作为命令行参数传递。然后读取此参数并将其输入SQL INSERT INTO查询。
最后,这两个数字略有不同。在最后一个例子中,我得到以下内容:
1)-753774083758266880
2)-753774083758266887
我错过了什么?
答案 0 :(得分:0)
这不是答案,但评论时间太长了。
MySQL说bigint
支持来自-9223372036854775808
的值。
但是,SQLFiddle上的以下代码:
select cast('-753774083758266880' as signed),
cast('-753774083758266887' as signed),
cast('-9223372036854775807' as signed)
返回:
-753774083758266900 -753774083758266900 -9223372036854776000
也许对真正大的价值(正面或负面)的支持需要合格。或者,这可能是这些数字在输出中的打印方式,与您的问题无关。
作为一个注释:它确实正确地取了这些值的差异,所以这可能只是一个输出问题。