我正在使用prisma2 + typescript + nexus + graphql-yoga 构建后端应用程序。我现在已经定义了我的模式,同时尝试通过运行命令 prisma2 migrate save --name "init"--experimental 来保存迁移
得到以下错误。
错误:数据库中的迁移比本地多。这绝不能发生。本地迁移 ID: .远程迁移 ID:20200312230215-init、20200312232858-init2
最佳答案
这是由于针对数据库执行的迁移与 prisma/migrations
文件夹中的迁移不匹配。
在以下情况下会发生这种情况:
prisma2 migrate save --name “init” --experimental
prisma2 migrate up --experimental
prisma/migrations
文件夹中的迁移文件 prisma2 migrate save --name “new-migration” --experimental
在第 4 步,您将看到该错误。
Prisma 在名为
_Migration
的表中跟踪数据库中执行的迁移。要解决该问题,请尝试删除数据库中的
_Migration
表。使用 SQLite,您可以执行以下操作:sqlite3 prisma/dev.db "delete from _Migration"
如果这不起作用,则需要重新创建数据库。如果您使用 sqlite,请删除
prisma/dev.db
文件(您将丢失数据库中的所有数据)。为了防止将来发生这种情况,请确保您从一个干净的数据库开始,如果您重用相同的数据库,请避免删除迁移文件(在执行后在
prisma/migrations
中)。关于Prisma2 迁移错误 : There are more migrations in the database than locally,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60691027/