Mysql使用Double類型報錯Out of range value的解決

# mysql版本:5.6.24
select version();
# 創建一個帶double類型字段的表
CREATE TABLE double_test (
  id    VARCHAR(32) PRIMARY KEY,
  score DOUBLE(5, 2)
)
# 錄入一個3位整數部分、2位小數部分,一共5個數字的數
INSERT INTO double_test VALUE (replace(uuid(), "-", ""), 123.45);
# 可以正常錄入
SELECT * FROM double_test;

# 錄入一個5位整數部分、2位小數部分,一共7個數字的數
INSERT INTO double_test VALUE (replace(uuid(), "-", ""), 12345.67);
# 報錯:Data truncation: Out of range value for column 'score' at row 1

結論,mysql double類型中,小括號前面的,是指總長度,而不是整數部分的長度。如果想要保存5位長度的整數、兩位長度的小數,小括號前面應該寫7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章