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"
很奇怪的问题,跟踪日志发现像是@Scheduled调度线程有的卡住了,本该立即写入库的记录延迟了8个小时后才入库。
@Scheduled(cron = "0 0 1/1 ?", zone = "Asia/Shanghai")
调度加上时区就正常了,没明白是怎么导致的线程延迟