MybatisPlus突然出现数据库id

我国知名研究白癜风的专家 https://jbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/2840/

今日份鸡汤:在这条人生路上,我们无可避免地边拥有边失去。无论愿不愿意,那些曾经的挚友,我未曾想失去的,却渐行渐远,成为了记忆中的一抹忧伤。愿他们一切安好,让时光流转,让美好永存。

问题场景:当数据量累计到一定程度,会突然出现一个问题,就是mysql的自增主键从四位一下跳到了20位,查了一些帖子还有人出现负数的情况,不论如何修改数据库的自增方式都不起作用。排查原因发现是引用了mybatis-plus组件,该组件会自动插入一个id到实体对象,导致的原因:

实体类主键上面只添加了

TableId

解决办法:

第一种(推荐):在主键上面添加注解:

TableId(value="id",type=IdType.AUTO),id为数据库索引字段,重新部署后台程序,然后重新恢复数据库表对应的自增方式,处理历史数据。设置数据库把自动递增改成正常的数字,就是删除现在不正确的数据,然后设置成1,或者改成目前最大的一个数字,比如正常的是最大为,现在设置成。

第二种:直接修改字段为long类型,保证有足够位数放入生成的id。

第三种:修改主键字段为字符串,使用uuid或者集群唯一id方式记录,且主键添加注解:

TableId(type=IdType.INPUT),同时在保存这张表时候,写入主键值即可。

type类型介绍:AUTO:AUTO(0,“数据库ID自增”),INPUT:INPUT(1,“用户输入ID”),ID_WORKER:ID_WORKER(2,“全局唯一ID”),UUID:UUID(3,“全局唯一ID”),NONE:NONE(4,“该类型为未设置主键类型”),ID_WORKER_STR:ID_WORKER_STR(5,“字符串全局唯一ID”);




转载请注明:http://www.aierlanlan.com/tzrz/8932.html

  • 上一篇文章:
  •   
  • 下一篇文章: