在PHP中设置值小于0得0

时间:2017-01-07 23:17:16

标签: mysql sql

我的数据库中有一些表格,其中包含BIGINT类型的列: enter image description here

问题是,当我设置(通过更新或插入)值低于0(例如-2)时,则在DB中将其设置为0。 enter image description here

有人知道为什么吗?

(在插入/更新之前,我没有任何更改此值的过程)。 Db是MySql

2 个答案:

答案 0 :(得分:4)

您可以阅读unsigned bigint和signed bigint之间的区别。 MySQL Bigint

无符号bigint值为:0到18446744073709551615
签署的bigint值为:-9223372036854775808至9223372036854775807
所以你必须使用签名的bigint

答案 1 :(得分:1)

看起来您的数据库实际使用的是BIGINT UNSIGNED,其范围为0到18446744073709551615.并且根据MySQL Reference Manual

  

当为整数列分配超出范围的值时,MySQL会存储表示列数据类型范围的相应端点的值

这意味着尝试在任何UNSIGNED列中存储负数将环绕为0。

要解决此问题,最好将数据类型明确设置为BIGINT SIGNED