目标单数据库记录数实际行数低于日志记录行数
问题描述:
背景:目标单数据库实际行数低于日志记录行数,下面以“eas到苍穹的物料集成”例子来讲解。
特别说明:该现象与数据库字段大小写敏感现象相似,并不是由候选键字段大小写敏感引起的问题。https://club.kdcloud.com/article/73720562257729792
首先可以看到:总行数和成功行数都是3617行。
然而,页面显示却只有2761条。
数据库查询显示数据:2763条。
分析:
1、起初,我们怀疑是由于候选键选择不当,存在重复的候选键导致目标数据部分以更新而不是插入的方式保存。
2、经过eas的源数据库排查后发现不存在重复的候选键,也不存在大小写相同的候选键,当然也就不是由于候选键字段大小写敏感导致的问题,于是怀疑是id重复导致的,将目标id使用#{new_int_id()}直接赋值。
3、接着,删除前一次同步的脏数据后进行重新同步,发现还是存在该现象,数据总行数依然3617不变,页面上显示的实际数据也还是2761不变。
4、在该次的执行日志中的内容中搜索关键字insert和update,日志内容包含insert的正好有2761行,update的正好有856行,并且将两次进行update的数据进行对比,发现通过update的id都是一样的。
4、由此想到了id可能是被缓存起来了,于是打开集成方案一看,发现在集成方案的控制参数中打开了‘记录源单/目标单ID关联关系’的开关。
如果打开了上图中‘记录源单/目标单ID关联关系’,那么该方案在运行过程中会将源单和目标单的id保存到一个中间表中,在第二次执行的时候会根据目标单的相关信息将前一次存在关系映射表中的目标单id取出,然后执行update操作。由于之前的操作只成功了856行,因此也只缓存了856行。
解决方案:
解决办法
集成方案界面关闭‘记录源单/目标单ID关联关系’这个选项。
集成服务云使用指南:https://club.kdcloud.com/article/45312
集成服务云新特性发布汇总:https://club.kdcloud.com/article/146134
目标单数据库记录数实际行数低于日志记录行数
本文2024-09-23 00:51:56发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142237.html