ERROR 1264 (22003): Out of range value for column 'total_amount' at row 1

ERROR 1264 (22003): Out of range value for column ‘total_amount’ at row 1

說明:出現此異常的原因是因爲超出mysql decimal設置的取值範圍了。

首先了解一下mysql的decimal

一 DECIAML是什麼

DECIMAL在MYSQL中是一種數據類型,相當於VARCHAR之類的。它能夠精確的保存數據的小數位,所以常用於記錄金額相關的數據,因爲浮點型是有誤差的。

那麼,DECIMALBIGDECIMAL是什麼關係呢?

說實話,他們並沒有什麼關係,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語句如何寫

其實很簡單

  1. 直接在相關工具(我這裏是navicat),裏面打開對應的
  2. 然後點擊設計表,直接手動修改即可
  3. 在保存之前,點擊SQL預覽,複製SQL語句
  4. 到服務器連接MYSQL進行修改就可以了。

好了,就這樣。希望能對小夥伴有所幫助~

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