数据库
升级到 Prisma ORM 7 时:迁移 ESM…
在从 Prisma ORM 6 升级到 7,或在使用 Prisma 7 时排查生成、CLI、环境变量与 Prisma Client 实例化问题时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
升级到 Prisma ORM 7 时:迁特定
解决思路
- 阅读 Prisma 7 升级指南:https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7
- 查阅 Prisma Config 参考:https://www.prisma.io/docs/orm/reference/prisma-config-reference
- 查阅 Prisma Client Extensions 文档:https://www.prisma.io/docs/orm/prisma-client/client-extensions
- 使用 Prisma 7 迁移提示(面向 AI agents):https://www.prisma.io/docs/ai/prompts/prisma-7
- 升级包:运行 pnpm add @prisma/client@7 和 pnpm add -D prisma@7。
- 确认最低版本:Node.js 20.19.0+(以及 22.x)、TypeScript 5.4.0+。
- 将项目迁移到 ESM:在 package.json 中设置 "type": "module",或将项目迁移为 ESM。
- TypeScript 项目必须按 ESM 编译/解析:例如配置 module: ESNext、target: ES2023、moduleResolution: node。
- 更新 schema.prisma 的 generator:把 provider 从 prisma-client-js 改为 prisma-client。
- 在 generator client 中设置必需的 output。
- 不要再依赖 Prisma Client 默认生成到 node_modules;使用 output 指定位置。
- 运行 npx prisma generate 后,将 Prisma Client 导入更新到生成输出路径,例如 import { PrismaClient } from './generated/prisma/client'。
- 将 schema.prisma 中已弃用的 url、directUrl、shadowDatabaseUrl 迁移到 prisma.config.ts(Prisma Config)。
- 如果之前用 directUrl 跑迁移,在 prisma.config.ts 中设置 CLI 迁移连接字符串。
- 为所有数据库的 Prisma Client 实例化使用 driver adapter;例如 Postgres 使用 @prisma/adapter-pg(用 PrismaPg 搭配直接 DB 连接字符串),SQLite 使用 @prisma/adapter-better-sqlite3。
- Prisma Accelerate 用户不要把 prisma:// 或 prisma+postgres://(Accelerate URL)传给 driver adapter;保留 Accelerate URL,并通过 Accelerate extension 实例化 Prisma Client。
- Prisma CLI 在 v7 默认不再自动加载 .env;显式加载环境变量,例如在 prisma.config.ts 中 import 'dotenv/config',或在脚本中加载。
- Bun 用户无需改动 .env 加载(bun 自动加载 .env)。
- 将 Prisma CLI 配置迁移到 prisma.config.ts;把 prisma.config.ts 放在项目根目录(与 package.json 同级)。
- 在 prisma.config.ts 中配置 schema 路径、migrations 路径/seed、datasource URL。
- 移除 prisma.$use(...);将中间件逻辑迁移到 Prisma Client Extensions。
- 移除 Client Extensions 中的 Metrics preview feature;改用数据库驱动/adapter,或通过 extensions 实现自定义计数器。
- 不再依赖 prisma migrate dev / prisma migrate reset 后自动 seeding;显式运行 pnpm prisma db seed(或 pnpm exec prisma db seed)。
- 移除 --skip-generate 和 --skip-seed 参数。
- prisma migrate dev 和 prisma db push 不再自动运行 prisma generate;显式运行 pnpm prisma generate(或 pnpm exec prisma generate)。
- 移除以下 Prisma 专用环境变量:PRISMA_CLI_QUERY_ENGINE_TYPE、PRISMA_CLIENT_ENGINE_TYPE、PRISMA_QUERY_ENGINE_BINARY、PRISMA_QUERY_ENGINE_LIBRARY、PRISMA_GENERATE_SKIP_AUTOINSTALL、PRISMA_SKIP_POSTINSTALL_GENERATE、PRISMA_GENERATE_IN_POSTINSTALL、PRISMA_GENERATE_DATAPROXY、PRISMA_GENERATE_NO_ENGINE、PRISMA_CLIENT_NO_RETRY、PRISMA_MIGRATE_SKIP_GENERATE、PRISMA_MIGRATE_SKIP_SEED。
- MongoDB 支持:Prisma ORM 7 尚不支持 MongoDB;如果需要 MongoDB,继续使用 Prisma ORM 6。
- 快速升级清单:升级包;确认 Node/TypeScript 版本。
- 快速升级清单:迁移到 ESM(或调整运行时/构建以消费 ESM)。
- 快速升级清单:将 schema.prisma generator 更新为 provider = "prisma-client" 并设置 output。
- 快速升级清单:运行 pnpm prisma generate,并更新 Prisma Client 导入到生成输出路径。
- 快速升级清单:在仓库根目录添加 prisma.config.ts;迁移 datasource 配置并显式加载 env。
- 快速升级清单:更新 Prisma Client 实例化以使用 driver adapter(除非使用 Accelerate)。
- 快速升级清单:更新工作流,显式运行 pnpm prisma generate 和 pnpm prisma db seed。
适用边界 · 注意事项
- 仍需要 MongoDB 支持时,不要升级到 Prisma ORM 7;继续使用 Prisma ORM 6。
- 项目无法迁移到 ESM,且运行时/构建链无法消费 ESM 时,不要直接升级到 v7。
- 仍依赖 prisma.$use 中间件或 Metrics preview feature,且尚未迁移到 Client Extensions/替代方案时,不要升级。