【解决问题】Mysql数字自增主键突然变成20位数字 您所在的位置:网站首页 为什么qq账号突然变了好多 【解决问题】Mysql数字自增主键突然变成20位数字

【解决问题】Mysql数字自增主键突然变成20位数字

2024-06-26 13:36| 来源: 网络整理| 查看: 265

【解决问题】Mysql数字自增主键突然变成20位数字

目录 背景分析解决方法总结

背景

​ Spring-boot项目中使用Mybatis-plus,把主键生成方式配置成uuid,但是数据库表主键都是数字自增类型,导致入库报错,主键生成方式配置改为auto类型后,入库没有问题了,但是数据的主键异常大,导致前端数据不能识别20位的数字,查询某条数据详情就是找不到;最后发现是数据库数据主键太大导致。

分析

​ Mysql数据库会把自增主键的下一个主键大小记录在information_schema库的TABLES表中,通过查询这个表就能够找到有哪些表的主键异常了,再具体修改每个表的AUTO_INCREMENT大小;因为information_schema库的内容都是从其他库中读取的,所以information_schema是只读的,只能通过ALTER TABLE去修改具体的表的这个选项。

解决方法

​ 1.查询数据库表的自增数据大小

SELECT TABLE_NAME,AUTO_INCREMENT FROM `TABLES` WHERE TABLE_SCHEMA='simulation_checking_dev' AND AUTO_INCREMENT IS NOT NULL

发现有些数据库表的AUTO_INCREMENT配置很长,把这些表的筛选出来。

​ 2.筛选出异常主键长度表

SELECT TABLE_NAME,AUTO_INCREMENT FROM `TABLES` WHERE TABLE_SCHEMA='simulation_checking_dev' AND AUTO_INCREMENT IS NOT NULL AND AUTO_INCREMENT LIKE '159785079%'

当时看所有异常主键的表AUTO_INCREMENT前几位都是159785079。

​ 3.更改表的下一个主键大小

ALTER TABLE simulation_checking_dev.emulation_bound_data AUTO_INCREMENT=112

查询这个数据表后,发现最后一个主键为111,下一正常主键应该为112,故改为112。

这样再插入新的数据,主键就正常了。

总结

​ 在开发过程中,涉及面很广的配置尽量不要乱动,在必须要改的情况下也得做足调研再去修改;否则,一个小的问题就能让人花费很长时间去解决;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有