ERROR 1264 (22003): Out of range value for column ‘total_amount’ at row 1
說明:出現此異常的原因是因爲超出mysql decimal設置的取值範圍了。
首先了解一下mysql的decimal
一 DECIAML是什麼
DECIMAL
在MYSQL中是一種數據類型
,相當於VARCHAR之類的。它能夠精確的保存數據的小數位,所以常用於記錄金額相關
的數據,因爲浮點型是有誤差的。
那麼,DECIMAL
和BIGDECIMAL
是什麼關係呢?
說實話,他們並沒有什麼關係,decimal是mysql的一種數據類型,BigDecimal是java的一個類。硬要說的話,decimal常用於表示金額,可具體到精確的小數位;BigDecimal常用於金額的計算,不會出現誤差,比如double類型的 1D - 0.9D 計算結果並不是0.1D 而是 0.09999999999999998D…
二 DECIAML取值範圍
相信使用過的朋友,都知道decimal是長下面這樣的 :
DECIMAL(a, b)
關於a 和 b ,說得容易理解些,
- a表示整數位,取值範圍是[1, 65]
- b表示小數位,取值範圍是 [0, 30]
舉個栗子:
decimal(4, 2) //取值範圍是 [-99.99, 99.99]
decimal(5, 2) //取值範圍是 [-999.99, 999.99]
decimal(10, 3) //取值範圍是 [-9999999.999, 9999999.999]
相信聰明的你,也發現了吧。a代表(整數位+小數位)
最大位數,b代表小數位
最大位數,進而構成其取值範圍。
以上內容均是本人親測,如下所示(money->decimal(10, 3)):
三 DECIMAL如何修改取值範圍
上面說了這麼多,也沒說如何解決最開始的問題啊。
別急別急,馬上就處理。答案大家都知道,就是增大其取值範圍,關鍵在於SQL語句如何寫
!
其實很簡單
- 直接在相關工具(我這裏是navicat),裏面
打開
對應的表
- 然後點擊
設計表
,直接手動修改
即可 - 在保存之前,點擊
SQL預覽
,複製SQL語句 - 到服務器連接MYSQL進行修改就可以了。
好了,就這樣。希望能對小夥伴有所幫助~