场景
开发过程中需求对原有的服务器后台的数据库部分进行prisma的重构,并且增加一张新表,因而需求确保数据库中的数据完美搬迁到prisma
过程
1. 依据数据库生成Schema界说
终端履行:
pnpm prisma db pull
履行结果:
依据数据库生成了对应的Schema
2. 新增一张表或许修正表结构履行搬迁指令
履行搬迁指令
pnpm prisma migrate dev
得到prisma正告,从提示能够看出,数据库的schema与搬迁前史不共同,需求重置整个数据库,一切的数据都将丢失。
3. 分析问题
首先需求知道prisma做出需求重置数据库的判别的依据是什么,明显经过prisma db pull
生成的schema是和数据库的结构共同的,因而问题不在这里。
问题出在了migration history
上,咱们能够从官方文档上找到答案。
从第四点能够看出,prisma migrate dev
是经过_prisma_migrations
表中的数据来判别是否需求重置数据表的。
知道了这一点,解决方法就有了。
4. 解决问题
找到了问题的原因,只需求手动创立一条搬迁前史就能够解决这个问题。
- 在prisma目录下创立
migrations/initial/migration.sql
文件。 - 经过mysql图形化东西,将创立表结构的sql语句导入到这个文件中(我这里用的是mtysql官方的东西workbench)
- 经过
prisma migrate resolve
指令使用这条记录,使其收效(其实便是将他存到_prisma_migrations
表中)
pnpm prisma migrate resolve --applied initial
- 这个时候,咱们在履行搬迁指令
prisma migrate dev
就能够实现完美搬迁了(--skip-generate
是为了演示的时候越过生成prisma/client
的过程,正常情况下不需求加)