Prisma,我只是更新一下表结构,你为什么要重置我的数据库!?

💡 原文中文,约1000字,阅读约需3分钟。
📝

内容提要

在场景开发过程中,通过prisma重构服务器后台的数据库部分,并增加新表。使用Schema定义和搬迁指令实现数据搬迁,但需要手动创建一条搬迁记录解决migration history问题。通过prisma migrate dev指令实现完美搬迁。

🎯

关键要点

  • 在开发过程中对服务器后台数据库进行prisma重构,并增加新表。
  • 使用pnpm prisma db pull命令生成数据库对应的Schema。
  • 执行pnpm prisma migrate dev命令时,发现数据库schema与迁移历史不一致,需要重置数据库。
  • 问题出在迁移历史上,通过_prisma_migrations表的数据判断是否需要重置数据库。
  • 手动创建一条迁移历史记录以解决问题,创建migrations/initial/migration.sql文件。
  • 使用mysql图形化工具导入表结构的SQL语句,并通过pnpm prisma migrate resolve命令应用这条记录。
  • 最终执行prisma migrate dev命令实现完美迁移。

延伸问答

如何使用Prisma重构数据库?

可以通过执行pnpm prisma db pull命令生成数据库对应的Schema,然后使用pnpm prisma migrate dev命令进行迁移。

为什么在执行迁移时会提示需要重置数据库?

提示需要重置数据库是因为数据库的schema与迁移历史不一致,Prisma通过_prisma_migrations表的数据来判断这一点。

如何解决Prisma迁移历史不一致的问题?

可以手动创建一条迁移历史记录,并将其导入到_prisma_migrations表中,使用pnpm prisma migrate resolve命令应用这条记录。

在Prisma中如何创建新的表?

在生成的Schema中新增表的定义后,执行迁移指令pnpm prisma migrate dev即可。

使用Prisma进行数据库迁移时需要注意什么?

需要确保数据库的Schema与迁移历史一致,否则可能会导致需要重置数据库。

如何导入SQL语句到Prisma的迁移文件中?

可以使用mysql图形化工具将创建表结构的SQL语句导入到migrations/initial/migration.sql文件中。

➡️

继续阅读