Published on

Prisma 迁移文件丢失怎么办

Authors
  • avatar
    Name
    Duck
    Twitter

如果你的数据库中已经有数据,但 _prisma_migrations 表是空的,并且本地的迁移文件也丢失了,你可以通过“基线(Baselining)”的方式让 Prisma 重新建立迁移历史,而不会丢失现有数据。具体步骤如下:

  1. 创建迁移目录和初始迁移文件夹
mkdir -p prisma/migrations/0_init
  1. 使用 prisma migrate diff 生成当前数据库结构的迁移 SQL
npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/migration.sql

这一步会根据你当前的 schema.prisma 和数据库实际结构生成一份 SQL 脚本。

  1. (可选)检查生成的 migration.sql,确保没有破坏性操作。

用 prisma migrate resolve 标记这次迁移为已应用

npx prisma migrate resolve --applied 0_init

这样会把 0_init 这条迁移记录写入 _prisma_migrations 表,但不会对数据库做实际更改。


完成上述步骤后,Prisma 就会认为你的数据库已经应用了这次迁移。之后你可以正常使用 prisma migrate dev 进行后续的 schema 变更和迁移管理了。

参考文档:Baseline with Prisma ORM, TypeScript, and MySQL