Prisma 在修改后的数据库上迁移

Prisma migrate on an altered DB

给定一个由数据科学家和开发人员组成的团队。

开发人员想使用 schema.prisma 但数据科学家不想使用并且想直接自由编辑数据库...

如果数据科学家直接更改数据库会怎样? prisma migrate dev/deploy 会继续正常工作吗?

如果数据科学家直接更改数据库,那么 prisma 模式和数据库模式之间就会发生漂移。

因此下次有人调用 prisma migrate dev 命令时,prisma 会提示您重置数据库。

来自文档:

The migrate dev command will prompt you to reset the database in the following scenarios:

  • Migration history conflicts caused by modified or missing migrations
  • The database schema has drifted away from the end-state of the migration history

建议只坚持一种方法,要么只通过迁移更新数据库,要么直接更新数据库,将两者结合起来会导致不良状态。

除了@Nurul 的回答,这是我所做的:

$ # In `.env`: points `DATABASE_URL` to the data-scientists' DB
$ npx prisma db pull # Pull changes from it and update `schema.prisma`

$ # In `.env`: points `DATABASE_URL` back to localhost
$ npx prisma migrate dev # Generate the migration and apply changes tolocal DB
Name of your migration: my_sneaky_new_migration

$ git add prisma/schema.prisma prisma/migrations/20220603XXXXX_my_sneaky_new_migration
$ git commit

$ # In `.env`: points `DATABASE_URL` to the data-scientists' DB
$ npx prisma resolve --applied "my_sneaky_new_migration" # Mark the migration as already applied

$ # In `.env`: points `DATABASE_URL` back to localhost