如何在生产环境永久删除失败的Prisma迁移,解决部署同步问题?
彻底清理生产环境Prisma迁移记录的步骤
当你本地删除Prisma迁移文件并重置了本地迁移表,但生产环境的_prisma_migrations表仍残留已删除的迁移记录时,就会导致部署时提示找不到对应迁移文件的错误。按以下步骤彻底清理生产环境的残留记录:
连接到生产数据库
用Fly命令进入应用的SSH控制台:flyctl ssh console -a <你的应用名称>如果是PostgreSQL数据库,接着进入数据库交互界面:
psql -U <数据库用户名> <数据库名称>(其他数据库请用对应客户端命令连接)
定位残留的迁移记录
查询_prisma_migrations表,找到你已删除的那条迁移记录:SELECT id, name, applied_at FROM _prisma_migrations;从结果里匹配本地已删除的迁移文件名,记下对应的
name或id。删除残留记录
执行SQL删除这条记录(用id更精准):DELETE FROM _prisma_migrations WHERE id = '<迁移记录的ID>';也可以用文件名匹配删除:
DELETE FROM _prisma_migrations WHERE name = '<已删除的迁移文件名>';验证并重新部署
再次查询确认记录已删除:SELECT * FROM _prisma_migrations;之后重新推送代码触发GitHub Actions部署,或手动执行Fly部署命令:
flyctl deploy --remote-only
重要提醒
- 操作生产数据库前必须先备份,避免误操作导致数据丢失。
- 确保本地
prisma/migrations文件夹的迁移文件,和生产库_prisma_migrations表的记录完全一致,防止后续再次出现迁移不匹配问题。 - 团队协作场景下,要同步所有成员的本地迁移状态,避免有人保留旧迁移文件引发冲突。
内容的提问来源于stack exchange,提问作者Brian Mwangi
相关产品推荐
相关产品推荐

