【问题标题】:Difference between prisma db push and prisma migrate devprisma db push 和 prisma migrate dev 之间的区别
【发布时间】:2021-10-02 23:32:51
【问题描述】:

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

【问题讨论】:

标签: prisma


【解决方案1】:

它们服务于两种不同的环境。 prisma db push 不能在您的生产环境中使用,如 docs 中所述

db push 使用与 Prisma Migrate 相同的引擎将您的 Prisma 架构与您的数据库架构同步,并且最适合架构 原型设计。 db push 命令:

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

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

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

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

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

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

migrate dev 是一个开发命令,绝不能用于 生产环境。

这个命令:

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

migrate dev 命令将提示您重置数据库中的 以下场景:

  • 由修改或丢失的迁移引起的迁移历史冲突
  • 数据库架构已偏离 迁移历史

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

【讨论】:

  • 这是非常不正确的。 prisma db push 从不用于生产环境。如文档中所述,它仅用于本地快速原型制作。针对生产环境的所有操作都应通过部署迁移来执行。
猜你喜欢
  • 2021-12-28
  • 2021-11-26
  • 2023-01-21
  • 1970-01-01
  • 2020-10-14
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多