数据库迁移必看:主键自增那些隐藏的跳号坑

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 150 浏览 25 回复

昨天给客户做数据迁移,从MySQL5.7升级到8.0,结果发现新表主键自增值莫名其妙跳了几千号。查了文档才发现,如果迁移时用mysqldump导出insert语句,导入时每条记录都会触发auto_increment计数器,而5.7和8.0的计数规则有细微差异。

最坑的是这种问题平时根本发现不了,直到某天ID突破2^31-1导致报错才暴露。解决办法其实很简单:导数据时加上--skip-add-auto-increment参数,然后手动执行ALTER TABLE重置自增值。但这个细节大部分教程都不会提,我也是查了3小时官方文档才找到答案。

还有更骚的操作:有些CMS卸载插件时会执行DROP TABLE,但忘记先删外键约束。结果就是主表数据没了,子表外键还在,下次安装插件直接报错。建议所有涉及表结构变更的操作,都先print_r出完整SQL确认一遍,别让自动化工具背锅。

评论25
回复 · 25
何宁敏
何宁敏 新手赤羽栖云 · #20 ·
已解决,谢谢楼主
Yuki
Yuki 新手净世白羽 · #19 ·
已解决,谢谢楼主
CoolKid🌸
CoolKid🌸 初级璃梦花海 · #18 ·
已解决,谢谢楼主
Kate
Kate 新手时梦乐园 · #17 ·
已解决,谢谢楼主
安然
安然 新手时梦乐园 · #16 ·
已解决,谢谢楼主
Drew
Drew 新手虹翼巡游 · #15 ·
同求,期待更新
Eden
Eden 新手 · #14 ·
写得很清楚,收藏了
晚风里的柚子
晚风里的柚子 新手虹翼巡游 · #13 ·
感谢分享!
SkyWalker
SkyWalker 新手璃海华章 · #12 ·
已解决,谢谢楼主
发光的海盐
发光的海盐 初级 · #11 ·
感谢分享!
蔡伟
蔡伟 初级清瑶问鼎 · #10 ·
感谢分享!
韩桂
韩桂 初级 · #9 ·
感谢分享!
KnoxStar
KnoxStar 新手流金绮梦 · #8 ·
写得很清楚,收藏了
温柔的橙子
温柔的橙子 新手麟宫绮梦 · #7 ·
感谢分享!
🐱汽水🎐
🐱汽水🎐 新手星灿心语 · #6 ·
学到了,顶一下
Ella
Ella 新手圣羽星庭 · #5 ·
同求,期待更新
蔡凯
蔡凯 新手 · #4 ·
同求,期待更新
何华悦
何华悦 新手 · #3 ·
写得很清楚,收藏了
🌙旅人🧡
🌙旅人🧡 初级清瑶问鼎 · #2 ·
已解决,谢谢楼主
Alex
Alex 新手 · #1 ·
已解决,谢谢楼主
1 2
微信客服 微信客服