Java + Mybatis Plus 插入数据时ID乱序原因?

mysql自增,id设置成了自增key,有插入失败后id会乱序,比如原来是1,一直失败了5个,到了6。这时候正确插入一条,id返回6。再正确插入一条结果id是5,不知道问题出在哪?

用的是 java + mybatis plus + mysql 8 读写数据,手动无法重现

1.实体类

public class SaledData implements Serializable {

    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    private LocalDate recordDate; // 设置了唯一约束
    ...
}

2.从远程获取数据并入库

@Scheduled(cron = "0 0 1/1 \* \* ?") 
public void getSaledData() {
    @Resource private ISaledDataService iSaledDataService;
    ...
    SaledData saledData = new SaledData();
    ...
    iSaledDataService.save(saledData); // 有时候数据会重复,会插入失败
}

3.出现的错误结果

        "id": 158,
        "createTime": "2024-05-13T04:00:08",
        "recordDate": "2024-05-12"

        "id": 160,
        "createTime": "2024-05-12T20:00:12",
        "recordDate": "2024-05-11"
阅读 954
1 个回答
新手上路,请多包涵

很奇怪的问题,跟踪日志发现像是@Scheduled调度线程有的卡住了,本该立即写入库的记录延迟了8个小时后才入库。

@Scheduled(cron = "0 0 1/1 ?", zone = "Asia/Shanghai")
调度加上时区就正常了,没明白是怎么导致的线程延迟

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题