整数溢出下一步

时间:2014-06-03 05:15:16

标签: php mysql database

我现在使用int(22)作为我的表格字段。但是现在它溢出了值2147483647并停止,所以我的 3000字段的ID相同。我真的很困惑

现在我用bigint(20) 无符号更改了它,但未来可能会有同样的情况。 请告诉我什么将更好地用于此 varcharbigint或任何

如果我得到一些解释也会很棒。

2 个答案:

答案 0 :(得分:6)

以这种方式思考:填写INT需要多长时间?也许六个月?

现在将这个时间乘以大约40亿。

如果以相同的速率插入数据,那么填充BIGINT需要多长时间。因此,如果花费您半年时间来填充INT,则BIGINT将持续20亿年。

这为您提供了BIGINT范围比INT大一些范围的范围。 BIGINT支持最多2个 64 值,这比INT中的值的数量大2 32

答案 1 :(得分:1)

NUMERIC可以存储65位数字,大于BIGINT UNSINGED

mysql> create table integral (a bigint, b numeric(65,0));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into integral (a) values(123456789012345678901234567890);
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+--------------------------------------------+
| Level   | Code | Message                                    |
+---------+------+--------------------------------------------+
| Warning | 1264 | Out of range value for column 'a' at row 1 |
+---------+------+--------------------------------------------+
1 row in set (0.00 sec)

mysql> insert into integral (b) values(123456789012345678901234567890);
Query OK, 1 row affected (0.00 sec)