关于在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;

原文地址:https://www.cnblogs.com/pengx/p/9862743.html

时间: 2024-11-14 12:56:34

关于在MySql的decimal中犯的一个错-此篇文章目的在于警醒自己的相关文章

2016.7.5 记项目过程中犯的一个从未察觉的低级错误

今天在项目中遇到了一个很奇葩的问题,具体什么问题就不说了,找了一下午实在找不出来,百般无奈之时,看到了自己敲的一条不太顺眼的代码: if(0<i<31) 心想这样写好像不好,于是将其改成if((i>0)&&(i<31)),编译调试,之前出现的问题居然奇迹般的消失了.经过和同学探讨,得出以下别人都知道的结论: if(0<i<31),程序首先计算0<i,i的范围是0~51,当i>0时,(0<i) == true,在我使用的编译器里面,认为t

LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)

前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickListener,这样显然是不合理的, /**GridVIew的条目点击监听*/ private GvOnItemClickListener mGvOnItemClickListener;//成员 这是Fragment的入口: @Override public View onCreateView(Layou

曾经犯的一个错:该用分号还是逗号

以下这段代码运行不出来,曾经花了很多时间去找错误,最后发现for循环里一个符号用错. 写下来,给自己一个警醒:for (i=0;i<x.length;i++),这里i=0与i<length应该要用分号分割! <html><!DOCTYPE html><html><head><script>function loadXMLDoc(){var xmlhttp;var txt,x,i;if (window.XMLHttpRequest) {

MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析

  关于如何理解MySQL执行计划中Extra列的Using where.Using Index.Using index condition,Using index,Using where这四者的区别.首先,我们来看看官方文档关于三者的简单介绍(官方文档并没有介绍Using index,Using where这种情况): Using index (JSON property: using_index) The column information is retrieved from the ta

mysql悲观锁中的共享锁和排他锁

概述: 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改. 排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改. 对于共享锁大家可能很好理解,就是多个事务只能读数据不能改数据,对于排他锁大家的理解可能就有些差别,我当初就犯了一个错误,以为排他锁锁住一行数据后,其他事务就不能读取

MySQL数据类型DECIMAL用法

前言:? 当我们需要存储小数,并且有精度要求,比如存储金额时,通常会考虑使用DECIMAL字段类型,可能大部分同学只是对DECIMAL类型略有了解,其中的细节还不甚清楚,本篇文章将从零开始,为你讲述DECIMAL字段类型的使用场景及方法. 1.DECIMAL类型简介 DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D).NUMERIC与DECIMAL同义,如果字段类型定义为NUMERIC,则将自动转成DECIMAL. 对于声明语法DECIMAL(M,D),自变量的值范围

EF连接Mysql 表&#39;TableDetails&#39;中的列&#39;IsPrimaryKey&#39;的值为DBNull

无法生成模型,因为存在以下异常:'System.Data.StrongTypingException:表'TableDetails'中的列'IsPrimaryKey'的值为DBNull.---> System.InvalidCastException:指定的转换无效. 原文链接http://stackoverflow.com/questions/33575109/mysql-entity-the-value-for-column-isprimarykey-in-table-tabledetail

MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的方案,因为现实中很多情况都不是固定不变的,能总结出来通用性的做法或者说是规律,是要考虑非常多的场景的,同时,面对能够达到优化的方式要追究其原因,同样的做法,换了个场景,达不到优化效果的,还要追究其原因.个人对此场景在不用情况表示怀疑,然后自己测试了一把,果然发现一些问题,同时也证实了一些预期的想法.

在MySQL query browser中要导出execl表单

导出:  在MySQL query browser中要导出execl表单,只需要点击file,选择export execl就可以了(要先进入表单哦!). 导入: 数据库的数据太多一下导入有点麻烦,如何将excel的数据直接导入数据库呢? 第一步 另存为txt文档,名字最好为数据库的table名.  在这我们要保存问文本文件用制表符分割的那个,这样我们的数据就不会乱. 第二步 打开txt文档,点击另存为,修改编码,解决中文utf8.  这个时候的文件名必须和你要导入的table名称一样,否则在lo