昨天一張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無符號類型的。(具體原因:無符號整型和有符號整型的區別就是無符號類型可以存放的正數範圍比有符號整型中的範圍大一倍,因爲有符號類型將最高位儲存符號,而無符號類型全都儲存數字。)
嗯,就是這樣!