今天在使用python 库mysqldb的rawsql的时候遇到一个问题(其实并不是mysqlbean引起的)

cls.raw_sql('update {table} set available_amount=available_amount+%s, update_time=%s'

'where user_id=%s'.format(table=Points.Meta.table), amount, now, user_id)

这里我在数据库里面的available_amount字段类型是decimal(16, 2),然后这里更新的时候amount的类型也是decimal,精度同样是精确到小数点后面两位。

但是这里有个问题,在mysql下decimal如果跟string类型做加减法 会报出warning。

在很多情况下,我们使用的orm级别在数据库曝出warning的时候就会中止运行

错误复现:

mysql> update temporary set amount = amount+'0.01' where id=1;

Query OK,1 row affected, 1 warning (0.00sec)

Rows matched:1 Changed: 1 Warnings: 1mysql>show warnings;+-------+------+---------------------------------------------+

| Level | Code | Message |

+-------+------+---------------------------------------------+

| Note | 1265 | Data truncated for column 'amount' at row 1 |

+-------+------+---------------------------------------------+

1 row in set (0.00 sec)

为什么会造成这种情况, 因为尝试在mysql里面传递带引号的数字符串会被转成double类型。使用double类型可能会丢失精度在和decimal相加的时候。所以会报出warning

这种情况只会在字符串数 会丢失精度的情况下报出,所以有时候会出现时有时无的报错信息。

所以避免这种情况的办法就是让decimal直接加浮点型,或者直接使用

cast('12.22' as decimal(16, 2))

转换成一样的类型,再相加减同样可以解决这个问题。

希望能对同样遇到坑的盆友有所帮助。

mysql truncated_mysql 由decimal 引起的 Warning: Data truncated for column相关推荐

  1. Warning: Data truncated for column #39;AirPress#39; at row 1

    /************************************************************************* Warning: Data truncated f ...

  2. Warning: Data truncated for column at row 1

    MySQL在数据入库的时候报这个错: Warning: Data truncated for column at row 1 是因为插入的数据不合法造成的, 比如:乱码,超出字段长度,非法字符等, 我 ...

  3. MYsql的enum字段报错row,SQLSTATE[01000]: Warning: 1265 Data truncated for column at row 1错误代码解决方法

    SQLSTATE[01000]: Warning: 1265 Data truncated for column 'status' at row 1 因为enum类型只支持数字型数据,而且出错率高,尤 ...

  4. mysql truncated_mysql中出现的Data truncated for column

    mysql中想一个数据库中插入一条记录时,有可能因为好多原因,会出现Data truncated for column XXXXX的错误,这是因为你的数据类型的长度不一致导致的,仔细查看一下数据类型的 ...

  5. MySQL中 Data truncated for column ‘xxx‘解决方法

    MySQL中 Data truncated for column 'xxx'解决方法 参考文章: (1)MySQL中 Data truncated for column 'xxx'解决方法 (2)ht ...

  6. pymysql 插入错误:Warning(1265, “Data truncated for column ‘XXXX‘ at row xxx“)

    问题 最近用python使用pymysql插入数据时,报错了,我一口气插入了2W条数据,在中间报错了,如下图: 报错打印如下: Warning(1265, "Data truncated f ...

  7. Mysql ERROR 1265 (01000): Data truncated for column ‘XXX‘ at row X

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 报错: ERROR 1265 (01000): Data truncated for column 'name' at row 520 解决方 ...

  8. 用Python将excel数据插入到MySQL报错(1265, Data truncated for column ‘num‘ at row 1)

    作为一个小白,这是第一篇帖子. 希望记录自己一路走来遇到的问题,也希望大佬指正. 一.背景: 用Python将数据逐行插入到MySQL. 二.问题: 但在python运行时发现总是报错(1265, D ...

  9. mysql导入文件出现Data truncated for column 'xxx' at row 1的原因

    mysql导入文件的时候很容易出现"Data truncated for column 'xxx' at row x",其中字符串里的xxx和x是指具体的列和行数. 有时候,这是因 ...

最新文章

  1. 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
  2. ThreadPoolExecutor使用详解
  3. SpringBoot 使用【p6spy-spring-boot-starter】集成 p6spy 监控数据库(配置方法举例)
  4. c语言教程for,C语言菜鸟基础教程之for循环
  5. github设置仓库可见性 私人仓库设置他人协作/可见
  6. 在线HTTP请求/响应头转JSON工具
  7. 弹窗编辑jsp报表内数据
  8. Extjs 之dataview布局
  9. 全国青少年编程等级考试scratch三级真题2019年3月(含题库答题软件账号)
  10. 阿里云云原生一体化数仓入选 2022数博会“十佳大数据案例”
  11. Introduction to SAP CPI
  12. js封装倒计时函数实现倒计时效果
  13. 安装oracle数据库过程中系统表空间,Oracle数据库安装及配置
  14. C++获取汉字拼音/简拼/首字母
  15. 2019.7月面试题总结(三)
  16. 【TSOJ课程】20 1151 玛雅日历
  17. 基于MATLAB的指纹识别系统的设计与实现
  18. 外接显示器如何调整亮度
  19. 刘涛入职阿里P10,年薪150W+:不做演员,也很优秀
  20. tf_Course6循环神经网络

热门文章

  1. 摄影艺考用学计算机吗,不艺考能学摄影专业吗?哪些大学摄影专业不用艺考?
  2. 【CCF相关】CCF考试的形式以及难度
  3. 毕业设计-基于微信小程序的精准健康管理系统
  4. zanox付款账户银行支付的填写(注册图解)
  5. 谷歌AI专家说:你们都是瞎努力!道翰天琼认知智能机器人API接口平台为您揭秘。
  6. E-mail营销历史
  7. 微信报错:{errcode:40164,errmsg:invalid ip 113.139.105.115 ipv6 ::ffff:113.139.105.115, not in white
  8. 想给自己的实景三维模型做个案例集?Wish3D Earth再合适不过了
  9. Div + CSS 基础
  10. “无限流量”套餐何时替代WiFi