【解决问题】Mysql数字自增主键突然变成20位数字 | 您所在的位置:网站首页 › 为什么qq账号突然变了好多 › 【解决问题】Mysql数字自增主键突然变成20位数字 |
【解决问题】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 实验室设备网 版权所有 |