问题描述:项目中没有迁移文件夹(原来的人没有提交该文件夹),线上有数据,现在需要添加一些字段,同时不能清空掉线上的数据。
- 先拉取线上的结构到本地
npx prisma db pull
- 本地生成迁移记录并应用
npx prisma migrate dev --name init
- 修改
schema.prisma
文件,比如新增字段 - 采用定制迁移方案,方便查看sql语句
- 生成迁移记录
> prisma migrate dev --create-only
- 检查sql语句,ok则应用
> prisma migrate dev --name add_file_to_tableName --skip-seed
–create-only: 只执行sql不应用sql
–skip-seed: 跳过seed阶段,不要影响数据库的原有数据。
踩坑记录:
- 由于prisma的内省有规则/约定的字段处理,原有项目中的schema写法和prisma的内省约定/规则不一致,并且项目中应用广泛。
- 如果拉取数据库结构会破坏原有手动编写的schema,硬要做pull操作的话,现在只能够跟之前手写的命名去一一做对比,工作量大且效率不高。
- 只能使用push来更新字段,也就是说这个项目目前只能使用一种更新数据结构的方式。