一 发现问题

        1.程序跑了一段时间,发现经常报 Duplicate entry ‘911450114’ for key ‘PRIMARY’ 异常;
        2.查看数据库中的id字段,发现有负值也有正值,而且都是比较大的数;
        3.查看建表时设置的AUTO_INCREMENT=1,是没有问题的,但是为什么会增长这么快呢?
        4.查询了一下数据库中总的数据条数,一共才200条。正常不应该有这个问题啊。
        5.带着疑问,开始google查找问题,一开始怀疑是数据库本身的问题,是不是数据库id自增主键设置的有问题,查看数据发现id和插入时间一点关系都没有。而且设置的auto_increment_increment 和 auto_increment_offset 都是对的

6.

        7.既然mysql没有问题,那是不是mybaits的问题呢,带着疑问查了一下网上的资料,查到这篇文章,https://blog.csdn.net/razorluo/article/details/106238129 mybatisplus自增主键很大问题排错
        8.看到这里我去看了下我的实体类,和别的实体类对比了一下,出现问题的实体类没有标识@TableId 这个注释,可能是创建实体的时候数据库还没有加自增
        9.     /**
                        id
                */
@TableId(value = “id”, type = IdType.AUTO)
private Integer id;`
        10.网上查了一下,如果不标识这个的话,mybatisplus 默认为 IdType.ASSIGN_ID
        11.在类com.baomidou.mybatisplus.core.config.GlobalConfig的DbConfig下
        12.public DbConfig() { this.idType = IdType.ASSIGN_ID; this.tableUnderline = true; this.capitalMode = false; this.logicDeleteValue = "1"; this.logicNotDeleteValue = "0"; this.insertStrategy = FieldStrategy.NOT_NULL; this.updateStrategy = FieldStrategy.NOT_NULL; this.whereStrategy = FieldStrategy.NOT_NULL; }
@TableId 注解的类型属性来设置主键 id 的增长策略,一共有几个多个主键策略
1,ASSIGN_ID(雪花算法)
2,ASSIGN_UUID(排除中划线的UUID)
3,AUTO(数据库ID自增)
4,INPUT(插入前自行设置主键值)
正常我们使用的是AUTO类型,即数据库id自增即可;
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/u012019209/article/details/124585933

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐