Arithmetic overflow error converting numeric to data type numeric错误解决

Posted 格子衫111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arithmetic overflow error converting numeric to data type numeric错误解决相关的知识,希望对你有一定的参考价值。

最近,发现一个定时任务报错,报错日志如下:

java.sql.SQLException: Arithmetic overflow error converting numeric to data type numeric. Query: insert into #tmp_smart_retl_chg(store_id,item_nbr,transaction_date,sequence_nbr,dept_nbr,TRANSACTION_TIME,EVENT_ID,ITEM_QTY,ITEM_QTY_INT,reason_code,item_name,status,try_times,create_time) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?) Parameters: [[1154, 981066872, 2023-03-05, 1, 99, 22:09:07, 1814, 134638.56000, 2000, SC, 透明HMS盒-底, 0, 0, 2023-03-05 23:50:00.0], [4754, 981066872, 2023-03-05, 2, 99, 22:09:07, 1814, 134148.00000, 2000, SC, 透明HMS盒-底, 0, 0, 2023-03-05 23:50:00.0]]

排查发现,原来是 ITEM_QTY 这个字段的值太大,超出定义的长度了,故出现数值溢出。

表定义的字段类型为:
[item_qty] decimal(9,4) NULL,

最大只能容下5位整数及4位小数,

而实际插入字段数值为134638.56000,有6位整数5位整数,超过其规定限制,故报错。

解决方案:
变更表结构,扩大字段长度,

--修改tmp_smart_retl_chg表 item_qty 字段长度
ALTER TABLE tmp_smart_retl_chg ALTER COLUMN item_qty decimal(12,5);

变更后字段容量,7位整数+5位小数,

总结:
后续设计表结构,字段类型及长度,一定要根据实际业务,给字段预留充足的空间

以上是关于Arithmetic overflow error converting numeric to data type numeric错误解决的主要内容,如果未能解决你的问题,请参考以下文章

QRCode.js网址太长生成二维码报错:Code Length OverFlow Error

JNI ERROR (app bug): local reference table overflow (max=512)

JNI ERROR (app bug): local reference table overflow (max=512)

Android Webrtc JNI ERROR (app bug): local reference table overflow (max=512)

JNI内存泄露JNI ERROR (app bug): local reference table overflow (max=512)

JNI ERROR (app bug): local reference table overflow (max=512) Android