关于在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中犯的一个错-此篇文章目的在于警醒自己的主要内容,如果未能解决你的问题,请参考以下文章

realloc:invalid next size 错误,谁能指出我在内存分配中犯的错误

关于mysql的decimal类型的外键的一个特殊限制

MySQL数据库设计常犯的错以及对性能的影响

LeetCode 437.路径总和

RN错误总结

开发人员在编写 HTML 和 CSS 时最常犯的六大错误