记一次生产问题解决 ORA-01438: value larger than specified precision allowed for this column

???? 努力成为Web全栈工程师! 本文由博客端 http://point9.top 主动推送

一、问题描述


java.sql.SQLDataException: ORA-01438: value larger than specified precision allowed for this column

二、问题百度

1、错误说明

ORA-01438,发生此错误的原因在于我们插入的数据长度超过了字段指定的字段长度,比如插入的数据为 102329204123.33829492,小数点前长度为 12,小数点后长度为 8,若字段字符类型指定为 Number(19,12),那么在插入时则就会报错。

2、oralce 的 Number()规则

首先说下 oralce 的 Number()在插入数据时遵循的规则:

设字段字符类型为 Number(a,b),其中 a>b,在插入数据时,整数部分长度最大不能超过 a-b,小数部分长度如果大于 b,则截取 b 长度的小数存入数据库,其余的将被舍弃。

如刚才我们所举的例子,19-12=7,只能存入整数位长度小于或等于 7 的数据,大于 7 时则就会报错。

3、解决办法

故解决办法就是修改 Number(a,b)中的 a,使其保障存入数据的整数位长度小于 a 即可。

三、问题实例

1、问题截图

image.png

image.png

image.png

2、问题描述

总保额实际传入 13 位
测试环境数据库 15 位
生产环境数据库 11 位
生产环境字段长度不够

3、问题解决

修改生产环境数据库该字段长度

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2717 引用 • 7994 回帖 • 778 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    101 引用 • 125 回帖 • 606 关注

赞助商 我要投放

1 回帖
请输入回帖内容 ...