最近在做项目时遇到一个问题,同一个方法中两次更新入库,其中一次成功,一次没执行。我先是排查应用程序日志,发现程序日志并没有异常,然后根据执行时间查了mysql的binlog日志。
binlog日志查看脚本如下:
/usr/local/mysql/bin/mysqlbinlog -v --start-datetime='2018-12-26 17:55:00' --stop-datetime='2018-12-26 17:57:00' logs/mysql-bin.000004 >/tmp/tmp.sql
binlog日志显示确实只执行了一次更新操作
### update `user_currency` ### where ### @1=15 ### @2=203 ### @3=17 ### @4=318.2131053694 ### @5=287.7714971818 ### @6=30.4416081876 ### @7='2018-12-26 17:39:57' ### set ### @1=15 ### @2=203 ### @3=17 ### @4=348.4720639080 ### @5=318.0304557204 ### @6=30.4416081876 ### @7='2018-12-26 17:39:57' # at 14487394
update user_currency set available_money = available_money ?, where user_id = ? and currency_id = ?
update user_currency set available_money = available_money ?, where user_id = ? and currency_id = ? update user_currency set available_money = available_money ?, where user_id = ? and currency_id = ? update user_currency set available_money = available_money ?, where user_id = ? and currency_id = ? 对应参数分别是: 0e-20(bigdecimal), 49(long), 17(long), 2.7377658553(bigdecimal), 49(long), 4(long) 23.30465650830011440000(bigdecimal),59(long), 17(long) 0(bigdecimal), 59(long), 4(long)
我将两次的更新合并到一起,改为批量操作,并且在测试环境开启了sql日志打印。第二天测试部门反馈还是存在这个问题。我把当天的日志拉出来比对,发现在批量更新时sql是有的,奇怪的是其中一个sql中的某个数值是科学计数法。
问题终于找到了,那解决问题就简单多了。mysql是弱类型,直接将科学计数法转成字符串即可解决问题。
相关推荐
科学计数法转换时间戳科学计数法转换时间戳科学计数法转换时间戳科学计数法转换时间戳科学计数法转换时间戳科学计数法转换时间戳科学计数法转换...计数法转换时间戳科学计数法转换时间戳科学计数法转换时间戳问题解决
oracle中科学计数法显示问题的解决,plsql显示超长数字的时候显示格式为科学计数法,此文档为解决方法
科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法...
将json转换为map之后,如果数值类型太多会在转换之后出现科学计数法的问题,经研究jackson源码、网上百度资料得知可以通过设置一些参数解决该问题
防止double加double后形成科学计数法问题
delphi处理excel科学计数法 //关于excel科学计数法 uses comobj
输入一科学计数法形式字符串,如1234.5e-6 ;通过double atof()将其转换成double形的数据
将long类型数据转换为科学计数法,使用的原生的写法,无需任何工具插件,编写环境支持jdk7/8及以上
易语言科学计数法模块源码,科学计数法模块,科学计数
今天小编就为大家分享一篇完美解决python中ndarray 默认用科学计数法显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
d39.威纶通科学计数法示例程序rar,本资料是关于威纶通科学计数法示例程序,更多详细内容请点击下载!
1.字符串值中包含e等科学计数法,比如12e-2,需要进行转化为普通数值0.12, 2.转化函数如下: 代码如下: private decimal changedatatod(string strdata) { decimal ddata = 0.0m; if (strdata.contains(“e...
科学计数法向一般数字的转化,数组实现,以及浮点数实现法
防止gridview导出到excel中自动转成科学计数法
当需要将科学计数法的数字字符串转换成decimal时,这2种写法都报错: msg 8114, level 16, state 5, line 1 error converting data type varchar to numeric. select cast('0.12e 006' as decimal(18,2)); select ...
易语言源码易语言科学计数法模块源码.rar 易语言源码易语言科学计数法模块源码.rar 易语言源码易语言科学计数法模块源码.rar 易语言源码易语言科学计数法模块源码.rar 易语言源码易语言科学计数法模块源码.rar ...
pl/sql中查询oracle大数(17位以上)时显示科学计数法的解决方法
编写程序通过设置ios::scientific和ios::fixed标志以定点和科学计数法显示浮点类型数据。
本文件只需修改一个属性,直接替换官方文件,引入即可解决导出excel的数字变成科学计数法的问题。 有个项目需要用到jquery 的easyui和导出excel,发现官方下载的datagrid-export.js有几处bug,例如导出的excel格式,...
powerbuider 怎么把数字转换为科学计数 ,怎么把科学计数转换为数字