使用saveOrUpdate()方法为什么还会报违反主键唯一约束

我的程序是有一个定时任务获取文件内容(json),并将内容转成实体用saveOrUpdate方法保存,然后删除文件,不知道为什么会报违法主键唯一约束的错误,再补充一点,我这个是文件处理是异步进行的,不知道有没有影响。

数据库应该是建了复合索引作为主键,id也是主键,这样的话,id冲突也是有可能的

有可能是在存在逻辑删除字段时,查询主键数据会查询不到,导致重复insert发生主键冲突问题
可以排查是否实体类加了@TableLogic注解,导致saveOrUpdate时查询不到逻辑删除的数据

saveOrUpdateBatch同理

如果一直update也可以考虑这里为切入点