You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Prisma.js拉取数据库后,如何不重置数据完成迁移?

解决Prisma手动迁移后空migration.sql的问题

问题分析

你执行npx prisma migrate resolve --applied 0_init只是标记迁移为已应用,但0_init.sql是空的——因为db pull仅将数据库结构同步到schema.prisma,没有生成对应的迁移SQL。Prisma要求本地迁移文件与数据库_prisma_migrations表的记录完全对应,才能正常管理后续迁移流程。

解决方案步骤

  1. 确保Schema与数据库完全同步

    • 拉取最新数据库结构到Schema:
      npx prisma db pull
      
    • 更新Prisma客户端:
      npx prisma generate
      
  2. 修复空的0_init迁移文件

    • 删除本地空的0_init迁移文件夹,再用MySQL命令删除_prisma_migrations表中对应记录:
      DELETE FROM _prisma_migrations WHERE migration_name = '0_init';
      
    • 生成包含当前数据库全量结构的初始迁移SQL:
      npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > prisma/migrations/0_init/0_init.sql
      
      该命令会对比空数据库与当前Schema,自动生成创建所有表的SQL并填充到0_init.sql中。
  3. 标记初始迁移为已应用
    执行命令让Prisma认可该迁移已在数据库生效:

    npx prisma migrate resolve --applied 0_init
    
  4. 验证后续迁移功能

    • 修改schema.prisma(比如新增字段),执行命令创建新迁移:
      npx prisma migrate dev --create-only
      
    • 检查生成的迁移文件SQL逻辑是否正确,再执行应用:
      npx prisma migrate dev
      
    • 确认数据库结构更新,且原有数据未丢失。

注意事项

  • 操作前务必备份数据库,防止数据意外丢失。
  • 确保prisma/migrations目录下的迁移文件与_prisma_migrations表中的记录完全对应,否则Prisma会抛出迁移不一致的错误。

内容的提问来源于stack exchange,提问作者Nabil Mudzaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:42:40