紧急排查数据库表结构(核心,必须执行)
首先通过 SQL 验证dish_category表的id字段配置,这是问题的根源:
-
连接你的数据库,执行以下 SQL 查看完整表结构: sql
-- 查看dish_category表的详细创建语句,重点关注id字段 SHOW CREATE TABLE dish_category;
- 问题的核心元凶 :表结构末尾的
AUTO_INCREMENT=2011257341079490564,表示数据库的自增序列当前起始值就是这个超大数字 ,后续新增数据时,ID 会从这个值开始连续递增(比如下一条就是2011257341079490565),自然还是超大 ID。 - **为什么初始值会这么大?**大概率是之前使用雪花算法插入过数据,或手动插入过超大 ID 值,导致数据库的自增序列被 "拉高",即使后续切换为数据库原生自增,也会从这个超大初始值继续递增,不会自动重置。
二、解决方案:重置自增序列初始值(一步到位解决超大 ID)
核心操作是将AUTO_INCREMENT初始值重置为合理的数值,让后续新增数据的 ID 从连续小数字开始递增,具体分两种场景执行 SQL:
场景 1:表中无重要数据(或已备份,想从 1 开始递增)
直接将自增初始值重置为1,后续新增数据的 ID 从 1 开始连续排列:
sql
-- 重置dish_category表的自增初始值为1
ALTER TABLE dish_category AUTO_INCREMENT = 1;