mysql表主键自增过大问题

这篇具有很好参考价值的文章主要介绍了mysql表主键自增过大问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题及项目环境

  问题

最近在做项目时,发现我创建的每一个表的主键设置自增,在插入数据数据时会出现自增值过大的问题。

问题展示:

在后端执行Basemapper中的insert()方法时,数据库中的主键id字段为下:

mysql表主键自增过大问题,mysql,Java,SpringBoot,mysql,spring boot,java

且我在对应的实体类的设置为下:

mysql表主键自增过大问题,mysql,Java,SpringBoot,mysql,spring boot,java

 我们的期望时看到Id = 1,而不是这么长的一段数字。

  项目环境 

在springboot中使用到mybatisPlus,其他都是默认配置。

 问题分析及解决

出现上述的原因其实就是mybatis-plus的id生成策略和mysql中的主键自增策略发生冲突了,在刚开始没有设置@TableId(type = IdtType.AUTO)的时候就执行过insert()操作。mybatis-plus默认的id策略是雪花算法 ,虽然后续我们手动的设置了mybatis-plus的id生成策略,但此时该表中的id索引就是雪花算法生成的id的基础上+1,所以导致出现上述问题。

解决方案:

通过问题分析我们可以知道,此时id的自增索引就是雪花算法生成的id的基础上+1,所以我们只需要重置表的信息即可,让id从1从头开始。

在mysql控制台中输入以下指令进行重置:

truncate table TableName #TableName表示对应的表名

执行指令后重新insert()测试结果为下:

mysql表主键自增过大问题,mysql,Java,SpringBoot,mysql,spring boot,java

最终解决问题。

总结

1. 在后续使用mybatis-plus时,要提前将@TableId设置好,防止在设置的情况下执行插入语句,否则会导致id还是使用雪花算法的生成策略,达不到期望效果。

2.如果已经出现生成的id是很长的数字时,我们先在对应的实体类的id上设置@TableId,然后再mysql控制台中输入truncate table TableName指令进行重置。文章来源地址https://www.toymoban.com/news/detail-576572.html

到了这里,关于mysql表主键自增过大问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过DBeaver 给Postgre SQL表 设置主键自增

    1.创建表 CREATE TABLE public.company ( id int4 NOT NULL , name text NOT NULL, age int4 NOT NULL, address bpchar(50) NULL, salary float4 NULL, join_date date NULL, CONSTRAINT company_pkey PRIMARY KEY (id) ); 2.插入数据(不传入id) INSERT INTO public.company (name, age, address, salary, join_date) VALUES(\\\'Kobe\\\', 20, \\\'Lake\\\', 10000, \\\'1996-07-13\\\');  

    2024年02月12日
    浏览(59)
  • mybatis实战:四、insert 用法(普通插入、返回主键自增的值)

    1.UserMapper.xml 1.指定特殊数据类型 2.<insert >元素,这个标签包含如下属性  2. UserMapperTest  1.只插入一条数据 2.回滚(不写入数据库) 3.插入后判断是否为空(为空/不为空,抛异常) 3.UserMapper 方法一: 使用 JDBC 方式返回主键自增的值  方法二: 使用 selectKey 返回主键的值

    2024年02月07日
    浏览(37)
  • mysql如何自定义自增主键值,以及所遇到的不生效问题

    最近有一个需求,要求对某些数据的数据库主键id格式化,要求id为(202311080000)的形式去自增,可以在get请求获取到这些数据时在请求路径上看到格式化的id,但是之前数据id有大于202311080000数值的,导致自增的主键值并没有生效(即使删除相关数据) 如何自定义自增主键值 第一种通过命

    2024年04月15日
    浏览(28)
  • MySQL数据库——MySQL AUTO_INCREMENT:主键自增长

    在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 通过给字段添加  AUTO_INCREMENT  属性来实现主键自增长。语法格式如下: 默认情况下,AUTO_INCREMENT 的初

    2024年02月11日
    浏览(26)
  • Mysql 自增主键设置以及重置自增值

            在创建需要带自增主键的表结构时,在主键上增加AUTO_INCREMENT,同时可以设置主键的启始值AUTO_INCREMENT=1。

    2024年02月12日
    浏览(21)
  • 如何合理选择ClickHouse表主键

    ClickHouse提供索引和数据存储的复杂机制,能够实现在高负载下仍有优异的读写性能。当创建MergeTree表时需要选择主键,主键影响大多数查询性能。本文介绍主键的工作原理,让我们知道如何选择合适的主键。 MergeTree表可以设置主键,必须在创建表时指定,示例如下: 上面在

    2024年02月16日
    浏览(25)
  • 面试官:MySQL 自增主键一定是连续的吗?大部分人都会答错!

    MySQL版本:8.0 数据库表:T (主键id,唯一索引c,普通字段d) 如果你的业务设计依赖于自增主键的连续性,这个设计假设自增主键是连续的。但实际上,这样的假设是错的,因为自增主键不能保证连续递增。 推荐一个开源免费的 Spring Boot 实战项目: https://github.com/javastacks

    2024年02月06日
    浏览(27)
  • SQL设置自增主键

    当表中字段无法充当主键或者无法设置联合主键时,可以考虑用自增序号设置主键 前提表中需要先创建一个id字段,用于充当主键,然后再进行以下操作 参数含义介绍: – 这里注意使用英文符号 – 序列重置到1000

    2024年02月13日
    浏览(30)
  • PostgreSQL如何建立自增主键

    在许多应用程序中,我们经常需要为数据表中的某个字段,例如ID,设置自增属性,以确保每次插入新记录时该字段的值都是唯一的。在本文中,我们将详细介绍如何在PostgreSQL数据库中为字段设置自增属性。 1. 环境介绍 确保你已经安装并配置好了PostgreSQL。 2. 创建数据表 首

    2024年02月04日
    浏览(32)
  • springboot~mybatis中使用selectKey获取自增主键

    在mybatis中,我们在insert操作之后,可以获取到自增主键的值,这个需要我们用到 这个方法,在使用时有一个坑需要注意,一会儿会说到。 假设我们有数据表id_offset,然后id是自增主键 我们在插入数据后,希望得到这个新插入的主键的值 我们不希望通过两条语句实现,因为这

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包