d51*_*512 6 database-migration prisma
我们的棱镜迁移似乎已经陷入了糟糕的状态。当我们得到最新的代码并运行
prisma migrate dev
Run Code Online (Sandbox Code Playgroud)
我们得到
迁移
20210819161149_some_migration无法完全应用于影子数据库。错误代码:P3018 错误:迁移应用失败。在错误恢复之前无法应用新的迁移。详细了解如何解决生产数据库中的迁移问题: https: //pris.ly/d/migrate-resolve迁移名称:20210819161149_some_migration
数据库错误代码:1065
源代码管理中的所有迁移都与_prisma_migrations表中的迁移匹配,所以我不确定为什么它认为20210819161149_some_migration失败。该记录logs中的列中没有任何内容。_prisma_migrations我认为发生的事情是开发人员应用了迁移,然后migration.sql在事后对其进行了更改。
无论如何,我们按照https://pris.ly/d/migrate-resolve概述的步骤进行操作,但它们似乎无法解决问题。它首先建议运行
prisma migrate resolve --rolled-back "20210819161149_some_migration"
Run Code Online (Sandbox Code Playgroud)
但这会导致
错误:P3012
迁移
20210819161149_some_migration无法回滚,因为它未处于失败状态。
然后我们尝试将其标记为已应用
prisma migrate resolve --applied "20210819161149_some_migration"
Run Code Online (Sandbox Code Playgroud)
但这会导致这个错误
错误:P3008
迁移
20210819161149_some_migration已按应用情况记录在数据库中。
我们也尝试过跑步
prisma migrate deploy
Run Code Online (Sandbox Code Playgroud)
这使
在 prisma/migrations 中发现 13 个迁移警告以下迁移自应用以来已被修改:20210819161149_some_migration
但运行时仍然遇到上述相同的问题prisma migrate dev。
有什么办法可以让 prisma 再次开心起来而不删除所有数据吗?
Tas*_*mam 13
一种可能的解决方法是根据当前架构/迁移历史记录开发数据库的基线。您将需要一个单独的备份数据库,并且您将丢失现有的迁移历史记录,但它应该保留您的数据。
该过程如下所示
prisma从您的文件夹以及_prisma_migrations数据库中的表中删除所有迁移历史记录。prisma migrate dev --name baseline_migration 。这将生成与您当前的 prisma 架构匹配的迁移。prisma migrate resolve --applied 20210426141759_baseline_migration (迁移名称开头的数字会有所不同)。您创建备份数据库并在该备份数据库中运行初始基线迁移的原因是您不想丢失主数据库中的数据。我意识到这不是一个理想的解决方案,但如果在保留现有开发工作流程的同时保留数据对您来说非常重要,那么它可能会起作用。
这篇关于将 Prisma Migrate 添加到现有项目的文章也值得一读。
| 归档时间: |
|
| 查看次数: |
12967 次 |
| 最近记录: |