关于在MySql的decimal中犯的一个错-此篇文章目的在于警醒自己
Posted dadapeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于在MySql的decimal中犯的一个错-此篇文章目的在于警醒自己相关的知识,希望对你有一定的参考价值。
今天在运行一段程序的时候报了Out of range value错误,网上的解释是说这个值与数据库字段类型不匹配,然而程序里面设置的是BigDecimal,数据库设置的是decimal,没有多想就把sql语句copy出来在数据库执行,发现是OK的,就有点懵逼了,然后就各种Debug,没有发现任何问题,后来去看了数据库设计,发现数据库的这个字段设置的是decimal(10,10),于是乎就打脸了;
太大意了,程序里面的sql语句直接执行没有报错,没有多想就认为是程序的问题,然而执行结果却是这个样子的
由于程序里面获取到的值是大于0的数字,所以程序层面就直接报错的,但是直接执行Sql语句的时候mysql底层估计是做了优化,不管传什么值,都给我变成0.9999999999;
发出来让自己涨涨记性;
decimal(x,y):x代表数字长度,y代表小数点占得长度;decimal(10,10)一共就唱10位,其中小数点就占了10位,所以在程序里面一旦这个值大于1就会报错,这个字段的值永远只能在 -0.9999999999 到 0.9999999999;
以上是关于关于在MySql的decimal中犯的一个错-此篇文章目的在于警醒自己的主要内容,如果未能解决你的问题,请参考以下文章