新建一个数据库表的字段int类型,Java下准备存System.currentTimeMillis(),记录毫秒数,结果返回错误:
2021-07-12 19:52:19 [WARN]SqlExceptionHelper - SQL Error: 1264, SQLState: 22001 2021-07-12 19:52:19 [ERROR]SqlExceptionHelper - Data truncation: Out of range value for column 'last_event_time' at row 1
经查询,System.currentTimeMillis()这个long类型,需要8个字节,查MySQL关于int长度的文档:
Type | Storage (Bytes) | Minimum Value Signed | Minimum Value Unsigned | Maximum Value Signed | Maximum Value Unsigned |
---|---|---|---|---|---|
TINYINT |
1 | -128 |
0 |
127 |
255 |
SMALLINT |
2 | -32768 |
0 |
32767 |
65535 |
MEDIUMINT |
3 | -8388608 |
0 |
8388607 |
16777215 |
INT |
4 | -2147483648 |
0 |
2147483647 |
4294967295 |
BIGINT |
8 | -2 63 |
0 |
2 63-1 |
2 64-1 |
int是4个字节,bigint是8个字节,所以修改下数据库表字段的类型,改成bigint就可以了:
ALTER TABLE `test` MODIFY COLUMN `last_event_time` bigint(20) NOT NULL DEFAULT 0 COMMENT '最后一次上传事件时间 毫秒数';
文章评论