棱镜数据库推送和棱镜迁移开发之间的区别

时间:2021-07-27 06:17:03

标签: prisma

prisma db pushprisma migrate dev 有什么区别?我什么时候应该使用一个而不是另一个。文档说prisma db push 只是关于模式原型设计,我不明白这是什么意思。

1 个答案:

答案 0 :(得分:3)

它们服务于两种不同的环境。 prisma db push 用于您的生产环境,如 docs

中所述 <块引用>

db push 使用与 Prisma Migrate 相同的引擎来同步您的 Prisma schema 与您的数据库 schema,并且最适合 schema 原型制作。 db push 命令:

  1. 内省数据库以推断并执行所需的更改 使您的数据库架构反映您的 Prisma 架构的状态。

  2. 默认情况下,在对数据库架构应用更改后, 生成器被触发(例如,Prisma 客户端)。你不需要 手动调用 prisma generate

  3. 如果 db push 预计更改可能导致数据丢失,则 将:

  • 抛出错误
  • 如果您仍然需要,则需要 --accept-data-loss 选项 进行更改

注意:db push 不与或依赖 迁移。迁移表不会更新,也不会迁移 将生成文件。

prisma migrate dev 用于您的本地环境,如 docs

中所述 <块引用>

migrate dev 是一个开发命令,不应在 生产环境。

这个命令:

  1. 按顺序重放影子数据库中的现有迁移历史记录 检测模式漂移(编辑或删除的迁移文件,或手动 更改数据库架构)
  2. 将待处理的迁移应用到 影子数据库(例如,同事创建的新迁移)
  3. 根据您对 Prisma 所做的任何更改生成新的迁移 运行 migrate dev
  4. 之前的架构
  5. 将所有未应用的迁移应用于 开发数据库并更新 _prisma_migrations
  6. 触发工件的生成(例如,Prisma 客户端)

migrate dev 命令将提示您在 以下场景:

  • 由修改或丢失迁移导致的迁移历史冲突
  • 数据库架构已经偏离了最终状态 迁移历史

如果您对此有任何其他问题,docs 中有此比较说明何时使用其中之一。

相关问题