生产环境遇到一个大bug-数据库存储字段四舍五入

1.问题描述

在生产环境中,用户收益有时能够正常到账,有时候不能正常到账。
用户资金涉及到account模块,资金变动主要涉及到冻结请求;请求event;转账记录;操作用户资金。冻结请求主要记录请求记录的参数,简单点就是充值和提现,event代表真正操作实际去操作的金额,财务转账记录相当于对资金变化做日志处理,最后真正操作用户资金记录。

2.问题所在

给用户发放收益时候,定义的amount数值小数最大位数为16位,而冻结请求表amount记录字段为9位,如果传过来的值大于9位数据库将做四舍五入处理,在五入的情况下,从冻结表中查询的金额大于实际传入的金额,就会做报错处理,抛出异常,导致发放收益失败。

3.解决方法

将冻结表中account表字段精度提高到16位就OK了,解决问题了。

你可能感兴趣的