prisma db push 和 prisma migrate dev 之间的区别
Posted
技术标签:
【中文标题】prisma db push 和 prisma migrate dev 之间的区别【英文标题】:Difference between prisma db push and prisma migrate dev 【发布时间】:2021-10-02 23:32:51 【问题描述】:prisma db push
和 prisma migrate dev
有什么区别?我什么时候应该使用另一种。文档说 prisma db push 只是关于模式原型设计,我不明白这是什么意思。
【问题讨论】:
我投票结束这个问题,因为它在文档 prisma.io/docs/concepts/components/prisma-migrate/… 中解释得很清楚 【参考方案1】:它们服务于两种不同的环境。 prisma db push
不能在您的生产环境中使用,如 docs 中所述
db push
使用与 Prisma Migrate 相同的引擎将您的 Prisma 架构与您的数据库架构同步,并且最适合架构 原型设计。db push
命令:抛出错误 如果您仍然需要,需要
自省数据库以推断并执行所需的更改 使您的数据库架构反映您的 Prisma 架构的状态。
默认情况下,在对数据库架构应用更改后, 触发生成器(例如,Prisma Client)。你不需要 手动调用
prisma generate
。如果
db push
预计更改可能会导致数据丢失,则 将:--accept-data-loss
选项 进行更改注意:
db push
不交互也不依赖于 迁移。迁移表不会更新,也不会迁移 将生成文件。
prisma migrate dev
用于您的本地环境,如 docs 中所述
migrate dev
是一个开发命令,绝不能用于 生产环境。这个命令:
按顺序重放影子数据库中的现有迁移历史记录 检测架构漂移(编辑或删除的迁移文件,或手动 更改数据库架构) 将挂起的迁移应用到 影子数据库(例如,同事创建的新迁移) 根据您对 Prisma 所做的任何更改生成新的迁移 运行之前的架构
migrate dev
将所有未应用的迁移应用到 开发数据库并更新_prisma_migrations
表 触发工件的生成(例如,Prisma 客户端)由修改或丢失的迁移引起的迁移历史冲突 数据库架构已偏离 迁移历史
migrate dev
命令将提示您重置数据库中的 以下场景:
如果您对此有任何其他问题,docs 中有此比较说明何时使用其中一个。
【讨论】:
这是非常不正确的。prisma db push
从不用于生产环境。如文档中所述,它仅用于本地快速原型制作。针对生产环境的所有操作都应通过部署迁移来执行。以上是关于prisma db push 和 prisma migrate dev 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
生成没有 DB 的 Prisma 模式,只有第 3 方 REST API