美文网首页
MybatisPlus突然出现数据库id很大或者为负数的情况

MybatisPlus突然出现数据库id很大或者为负数的情况

作者: wyn_做自己 | 来源:发表于2023-04-09 10:00 被阅读0次

    今日份鸡汤:这一路,无论你愿意与否,我们都在边拥有边失去着,致那些我不曾想失去却依旧失去了的曾经的挚友,愿你一切安好~

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

    实体类主键上面只添加了@TableId

    解决办法:

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


    image.png

    第二种:直接修改字段为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”);

    具体原因可以参考:https://blog.csdn.net/razorluo/article/details/106238129

    相关文章

      网友评论

          本文标题:MybatisPlus突然出现数据库id很大或者为负数的情况

          本文链接:https://www.haomeiwen.com/subject/mxkbddtx.html