我有MySQL表产品,其中包含 url 和 url_crc 字段。插入时我的CRC32计算不正确。
INSERT INTO产品(url,url_crc)VALUES ( 'http://www.zappos.com/product/7859366/color/106', CRC32( 'http://www.zappos.com/product/7859366/color/106'))
结果是: http://www.zappos.com/product/7859366/color/106,2147483647
但是当我这样做时:
SELECT CRC32('http://www.zappos.com/product/7859366/color/106')
结果是: 2838206275
为什么会这样? 2838206275 != 2147483647
。
触发器没有帮助。结果是一样的。
答案 0 :(得分:2)
32位有符号整数的最大值是2 ^ 31-1。
2838206275大于此。
(2147483647方便地为2 ^ 31-1)。
换句话说,使用更大的数据类型(bigint)。
答案 1 :(得分:1)
它被int
类型的最大值截断。
将url_crc列更改为bigint
类型。
ALTER TABLE products MODIFY COLUMN url_crc BIGINT;