重复记录出现在mysql中

时间:2019-01-09 06:06:11

标签: mysql spring-boot mybatis

mysql中有一些重复的记录。似乎某些特殊情况会触发它。我已经检查了我的代码,但没有给出理由。

spring-boot2.1,mybatis2.1,mysql5.7

'b
'a

service code

java entity

mysql record

1 个答案:

答案 0 :(得分:0)

这看起来非常像并发问题。该代码有两件事:

  1. 获取用户和推销员之间的所有关联
  2. 如果没有关联,请创建一个

执行多个并发调用addSalesmanUser时会发生此问题。在这种情况下,第一步可能会获取多个并发调用的空列表,因为在其执行时没有插入其他记录。因此,第二步将插入多个记录。

您写道这不是问题,但是请查看“创建时间”列,相差4毫秒,这表明这是并发执行。

处理此问题的最简单方法是强制实施约束,即对于给定用户,数据库中应该只有一名推销员。为(user_id, salesman_id)对创建唯一约束。安装到位后,只有一个呼叫会成功。