news 2026/1/22 5:54:52

【Prisma】如何修复(重建)已经损坏的迁移历史?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Prisma】如何修复(重建)已经损坏的迁移历史?

当 migrations 历史已经损坏,但是数据库的数据还是完好的,这时简单的方法是删除迁移历史记录,以数据库内容重建迁移历史,也就是以当前数据库的状态重建基线,具体如下。

实际情况是,当你应用 migrate 命令时报错,显示迁移历史记录丢失。

这种情况发生的原因是:你的数据库中存在一个名为_prisma_migrations的表,记录了过去所有的迁移历史(那几十个2025xxxx的记录),但你本地的prisma/migrations文件夹为空。Prisma 发现数据库记录的迁移在本地找不到,因此认为发生了“漂移(Drift)”。

千万不要运行prisma migrate reset,否则会清空所有数据。

按照以下步骤通过“基线化(Baselining)”来恢复迁移功能:

第一步:清理数据库中的迁移记录

由于你本地的迁移文件已经丢失,且你想重新开始,我们需要让数据库“忘记”之前的迁移历史。

连接到你的数据库(使用 pgAdmin, TablePlus 或命令行),执行以下 SQL:

-- 删除所有旧的迁移记录,这样 Prisma 就会认为这是一个新起点TRUNCATETABLE_prisma_migrations;

第二步:创建初始迁移文件(基线)

现在我们要根据当前的schema.prisma创建一个新的“起始”迁移文件,但不立即执行它(因为表已经在数据库里了)。

  1. 创建迁移文件夹(如果不存在):

    mkdir-p prisma/migrations/0_init
  2. 使用prisma migrate diff生成当前 schema 的全量 SQL:

    npx prisma migratediff\--from-empty\--to-schema-datamodel prisma/schema.prisma\--script>prisma/migrations/0_init/migration.sql

    这一步会把当前的模型定义生成为一个完整的migration.sql文件。

第三步:标记该迁移已完成(关键)

我们需要告诉 Prisma:“这个0_init迁移已经应用过了,你不需要再往数据库里跑 SQL 了”。

执行以下命令:

npx prisma migrate resolve --applied 0_init

第四步:同步并验证

现在你的本地文件(0_init)和数据库记录(_prisma_migrations表里的一条记录)就同步了。

尝试运行:

npx prisma migrate dev

结果预测:

  • 如果你的schema.prisma和 数据库结构完全一致,Prisma 会提示Already in sync
  • 如果你有细微改动,Prisma 会提示你创建一个新的迁移。

常见问题排查

1. 如果执行migrate resolve报错找不到文件?
确保目录结构如下:

prisma/ schema.prisma migrations/ 0_init/ migration.sql

2. 以后改了 schema 怎么办?
现在迁移功能已经恢复了。以后只需正常运行:

npx prisma migrate dev --name add_new_field

3. 为什么不直接用migrate dev --create-only
因为当数据库中存在_prisma_migrations记录而本地没有文件时,Prisma 的安全机制会强制要求reset。手动清空该表并resolve是绕过此机制且保护数据的标准做法。

建议:修复完成后,务必将新的migrations文件夹提交到 Git 仓库,防止再次丢失。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/20 23:01:32

1、Windows 10入门指南:开启便捷数字生活

Windows 10入门指南:开启便捷数字生活 1. Windows 10简介 Windows 10(2018年春季创作者更新版)是微软操作系统的最新一代。它就像计算机的核心程序,让计算机变得实用,并为其他程序(如文字处理器、照片查看器和网页浏览器)提供支持。就像教育能让你阅读小说或玩游戏一样…

作者头像 李华
网站建设 2026/1/21 10:59:40

Qwen3-235B:单模型双模式推理新突破

大语言模型领域再迎新突破,Qwen3系列最新发布的235B参数模型(Qwen3-235B-A22B-MLX-6bit)首次实现单模型内无缝切换"思考模式"与"非思考模式",在推理能力与效率之间建立动态平衡,标志着通用人工智能…

作者头像 李华
网站建设 2026/1/21 11:17:54

LongCat-Video:分钟级长视频高效生成模型

LongCat-Video:分钟级长视频高效生成模型 【免费下载链接】LongCat-Video 项目地址: https://ai.gitcode.com/hf_mirrors/meituan-longcat/LongCat-Video 美团龙猫团队正式发布LongCat-Video——一款具备136亿参数的基础视频生成模型,通过统一架…

作者头像 李华
网站建设 2026/1/21 9:27:25

6、Windows 10 使用指南与网页浏览基础

Windows 10 使用指南与网页浏览基础 一、更改日期和时间 在 Windows 10 系统中,若要更改日期和时间,可按以下步骤操作: 1. 打开日历和时钟 :点击任务栏上显示的日期和时间,此时会弹出日历和时钟,同时还会显示日历中的议程列表,若想隐藏议程列表,可点击“隐藏议程”…

作者头像 李华
网站建设 2026/1/18 16:14:18

8、日常实用应用使用指南

日常实用应用使用指南 在日常生活中,我们会用到许多实用的应用程序来帮助我们更高效地完成各种任务。本文将详细介绍邮件应用、联系人应用和日历应用的常见操作,包括写邮件、添加联系人、删除联系人以及添加日程等。 邮件应用操作指南 撰写邮件 打开邮件应用,点击屏幕左…

作者头像 李华
网站建设 2026/1/20 20:57:00

腾讯开源Hunyuan-0.5B轻量化大模型

腾讯正式开源混元大模型家族新成员——Hunyuan-0.5B-Instruct-GPTQ-Int4,这是一款专为高效推理设计的0.5B参数轻量化指令微调模型,通过4位量化压缩技术在保持性能的同时大幅降低部署门槛,标志着大模型向边缘设备和资源受限场景普及迈出重要一…

作者头像 李华