Prisma:所有迁移都已应用
Posted
技术标签:
【中文标题】Prisma:所有迁移都已应用【英文标题】:Prisma: All migrations are already applied 【发布时间】:2020-10-22 10:21:09 【问题描述】:目标:在 Kubernetes 集群的 InitContainer 内运行数据库迁移以更新数据库。
预期结果:容器应该运行,并将 Prisma 迁移打包到容器中。随后,Prisma migrate 命令应该运行并更新数据库,
npx prisma migrate up --experimental
当数据库为空时容器运行,迁移命令被调用,我收到以下消息,
All migrations are already applied
虽然这会在数据库中创建 _Migration 表,但不会应用任何迁移。如果我从本地计算机连接到数据库,我可以运行迁移脚本并更新所有内容。如果我从容器中再次运行迁移脚本,我会收到以下错误,
Error: There are more migrations in the database than locally. This must not happen. Local migration ids: . Remote migration ids
为了确保我正确连接到我运行的数据库,
npx prisma introspect --print
这会从数据库中打印出 DB 架构,以证明烘焙到容器中的连接字符串实际上命中了正确的 DB。
我现在有点困惑问题可能出在哪里。有谁知道如何最好地调试 Prisma 迁移,或者是否有任何已知问题可能导致此问题?
【问题讨论】:
您的容器是否包含prisma/migrations/migrate.lock
文件?此文件应包含您的迁移。
是的,我有 migrate.lock 文件。
这看起来好像 migrations
文件夹不存在于容器中,或者 CLI 找不到它。你能分享你用来为容器创建镜像的 Dockerfile 吗?
你是对的,它看不到迁移文件夹,但这是由于一个愚蠢的错误,我在运行命令之前没有进入 Prisma 文件夹。
【参考方案1】:
这看起来像一个愚蠢的错误,我需要 cd 到包含迁移的 prisma 文件夹才能运行
cd prisma
npx prisma migrate up --experimental
【讨论】:
以上是关于Prisma:所有迁移都已应用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移
Apollo / GraphQL / Prisma“登录”突变不会返回所有用户字段