MySQL插入错误的CRC32哈希

MySQL插入错误的CRC32哈希,mysql,Mysql,我有MySQL表产品,它有url和url\u crc字段。插入时,我的CRC32计算不正确 插入到产品(url、url\U crc)值中 ('http://www.zappos.com/product/7859366/color/106', CRC32('http://www.zappos.com/product/7859366/color/106(")) 结果是: ,2147483647 但当我这么做的时候: 选择CRC32('http://www.zappos.com/product/785

我有MySQL表产品,它有urlurl\u crc字段。插入时,我的CRC32计算不正确

插入到产品(url、url\U crc)值中 ('http://www.zappos.com/product/7859366/color/106', CRC32('http://www.zappos.com/product/7859366/color/106("))

结果是: ,2147483647

但当我这么做的时候:

选择CRC32('http://www.zappos.com/product/7859366/color/106")

结果是:2838206275

为什么会这样<代码>2838206275!=2147483647


触发器没用。结果是相同的。

它被
int
类型的最大值截断

将url\u crc列更改为
bigint
类型


ALTER TABLE products修改列url\u crc BIGINT

32位有符号整数的最大值为2^31-1

2838206275大于此值

(2147483647是2^31-1)


换句话说,使用更大的数据类型(bigint)。

CRC32函数返回的数据类型是INT UNSIGNED-我认为您应该使用该类型而不是bigint,否则您使用的空间是存储32位CRC所需空间的两倍。