答案 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
。