首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prisma db push与prisma迁移开发的区别

prisma db push与prisma迁移开发的区别
EN

Stack Overflow用户
提问于 2021-07-27 06:17:03
回答 2查看 10.9K关注 0票数 11

prisma db pushprisma migrate dev有什么区别?我什么时候该用一种而另一种。Docs说prisma db push只是关于模式原型的,我不明白这意味着什么。

EN

回答 2

Stack Overflow用户

发布于 2021-07-27 07:41:17

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

db push使用与Prisma迁移相同的引擎来同步Prisma模式和数据库模式,并且最适合模式原型化。db push命令:

  1. 对数据库进行反思,推断并执行使数据库模式反映Prisma模式状态所需的更改。
  2. 默认情况下,在将更改应用于数据库架构后,将触发生成器(例如,Prisma客户端)。您不需要手动调用prisma generate
  3. 如果db push预期这些更改可能导致数据丢失,那么它将:
  • 抛出错误
  • 如果您仍然想要进行更改,则需要--accept-data-loss选项

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

prisma migrate dev在您的本地环境中使用,如文档中所解释的

migrate dev是一个开发命令,不应该在生产环境中使用。 这个命令:

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

migrate dev命令将提示您在下列情况下重置数据库:

  • 因迁移修改或缺失而引起的迁移历史冲突
  • 数据库架构已经偏离了迁移历史的结束状态。

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

票数 7
EN

Stack Overflow用户

发布于 2022-08-01 07:20:23

从医生那里:

使用db push在项目开始时对模式进行原型化,当您满意于第一稿使用db push对现有模式的更改时初始化迁移历史,然后运行prisma迁移dev从您的更改生成迁移(您将被要求重置)

所以,对我来说,这里的关键是,我第一次不得不运行db push (进入heroku postgres的heroku应用程序)。在那之后,一直在迁徙.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68539836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档