Prisma重建迁移历史
通常,在本地进行数据库迁移:
npx prisma migrate dev --name xxx
线上代码部署后,执行下面的命令完成线上数据库迁移:
npx prisma migrate deploy
Prisma 迁移历史丢失了!
这种情况发生的原因是:你的数据库中存在一个名为 _prisma_migrations 的表,记录了过去所有的迁移历史(那几十个 2025xxxx 的记录),但你本地的 prisma/migrations 文件夹为空。Prisma 发现数据库记录的迁移在本地找不到,因此认为发生了“漂移(Drift)”。
千万不要运行 prisma migrate reset,否则会清空所有数据。
按照以下步骤通过“基线化(Baselining)”来恢复迁移功能:
第一步:清理数据库中的迁移记录
由于你本地的迁移文件已经丢失, 且你想重新开始,我们需要让数据库“忘记”之前的迁移历史。
连接到你的数据库(使用 pgAdmin, TablePlus 或命令行),执行以下 SQL:
-- 删除所有旧的迁移记录,这样 Prisma 就会认为这是一个新起点
TRUNCATE TABLE _prisma_migrations;