近日接到 很多软件 集中跨年BUG 将expression 转换为数据类型 int 时出现算数溢出错误。
原因:
某些收银软件 财务软件 ,老软件, 在设置数据类型变量的时候,没有考虑到位。
使用 int 类型。。
而最大值有限制的。
int - 2,147,483,647 ~ + 2,147,483,647
程序一般在获取最大单号的时候,,会获取当前日期或者时间参数计算最大单号ID
Getdate()
比如 20220101 * 1000 就超过了int最大类型值
获取到2022年跨年的时候,计算出来的ID值 大于了INT类型。
所以出现这种报错。。。
这完全是程序设计缺陷,,,,
有些软件出现 单号插入重复等等错误。。
解决方法:
如果官方没有更新补丁,那么可以通过数据库或者修改程序数据类型进行修复。
数据库在使用过程中,如遇到突然断电的情况,数据库损坏的机率很大,建议客户实时备份数据。数据库损坏后不要盲目进行修复处理,先做好备份后再进行其它操作。
1.请务必做好备份,备份了数据库,在操作,保证数据绝对安全。。