Mysql数据库的Bigint字段值溢出问题

今天在处理文章去重的过程中,在把simhash计算出值放到mysql数据库的过程中发现hash字段值溢出的情况。
在java程序中我的值是BigInteger类型的,数据库存放的字段也是bigint类型,这个按道理是可以存放的,百思不得其解,一直在原因。后面发现是数据库字段设置问题,即字段的有无符号问题。

unsigned 既为非负数,用此类型可以增加数据长度!
例如如果
tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2

unsigned 属性只针对整型,而binary属性只用于char 和varchar。
在这里插入图片描述
每种数值类型的名称和取值范围如下图所示。
在这里插入图片描述

所以真相大白,导致我的bigint字段溢出的原因就是我的bigint字段设置的是有符号的,所以我们把他设置成无符号的就可以了。如下:

set sql_mode = 'NO_UNSIGNED_SUBTRACTION';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值