数据库迁移必看:主键自增那些隐藏的跳号坑
昨天给客户做数据迁移,从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确认一遍,别让自动化工具背锅。
最新打赏

