昨天一张MYSQL表里id设置一个bigint类型20位的主键,以便存储一个crc64(自己的20位int)的结果,但是这时候出现了一个问题
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column 'id' at row 1
表面上看好像是长度太长,当我减少一位生成的crc后也确实可以插入表里,但是我设置的就是20位的bigint啊,为什么会出现这个情况?
错误的原因:不是因为数据太长,而是因为在数据库中设置的类型是unsigned无符号类型的。(具体原因:无符号整型和有符号整型的区别就是无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。)
嗯,就是这样!