Migration failed 迁移失败
一句话:数据库迁移失败通常是表结构变更、数据冲突、权限不足或迁移顺序不一致导致的。
它是什么
Migration failed是项目在执行数据库结构变更时失败的报错。常见于Prisma、TypeORM、Rails、Django等框架。它可能发生在新增字段、删除字段、改字段类型、加唯一约束或同步线上数据库时。
适合干什么
- 全栈开发新手
- 使用ORM的人
- 部署网站时遇到数据库报错的人
- 从本地迁移到线上环境的人
不适合干什么
- 没有数据库权限的人直接强行操作
- 不备份生产数据就尝试修复的人
普通人怎么用
- 先复制完整报错,不要只看最后一行
- 确认连接的是开发库还是生产库
- 检查迁移文件顺序
- 看是否有重复字段、重复表或数据不符合新约束
- 备份后再修复生产库
进阶用户怎么用
- 把失败迁移拆成更小步骤
- 先清理脏数据,再加唯一约束或非空约束
- 用事务保证迁移失败可回滚
- 建立开发、测试、生产三套迁移流程
常见误区
- 删除迁移文件后重新生成,导致团队环境不一致
- 线上库没有备份就reset
- 本地能跑就以为线上也能跑
- 忽略已有数据和新字段约束的冲突
和相似工具的区别
- 代码报错:通常修代码即可。
- 迁移失败:涉及数据库结构和已有数据,修复前要更谨慎。
入门步骤
- 备份数据库
- 复制完整报错
- 确认环境
- 定位失败迁移
- 检查已有数据
- 修复并重跑
推荐工具(第三方)
Prisma、TypeORM、Django、Rails、DBeaver