Prisma 支持哪些数据库与 Serverless 平台
支持矩阵(v7 / v8)
Prisma ORM v7 是长期支持版本,覆盖最完整的数据库矩阵。v8 在部分数据库上仍在补齐中。
| 数据库 | v7 支持等级 | v8 支持等级 | 备注 |
|---|---|---|---|
| PostgreSQL | ✅ 完整 | ✅ 完整 | 最成熟的支持,也是官方教程首选 |
| MySQL | ✅ 完整 | ✅ 完整 | 含 MariaDB 兼容 |
| SQLite | ✅ 完整 | 🟡 早期访问 | 实验包 @prisma/orm-sqlite |
| MongoDB | ✅ 完整 | ✅ 完整 | v8 提升为一等数据库家族,支持聚合 |
| SQL Server | ✅ 完整 | 🔜 稍后 | |
| CockroachDB | ✅ 完整 | 🔜 稍后 | PostgreSQL 兼容,v7 可用 |
Serverless 数据库适配
Prisma 特别适配了一批 Serverless 托管数据库,这些服务的连接池和无服务器特性与 Prisma 集成良好:
- Neon — Serverless PostgreSQL,支持自动扩缩容到零
- Supabase — 开源 PostgreSQL 托管,自带 Dashboard
- PlanetScale — MySQL 分支数据库,主打无锁 schema 迁移
- Turso — libSQL(SQLite fork),适合 Edge 部署
- Cloudflare D1 — Cloudflare 自家 SQLite,与 Workers 无缝集成(预览阶段)
Prisma Postgres
Prisma 官方还推出了托管的 PostgreSQL 服务 Prisma Postgres,与 Prisma ORM 和 Prisma Studio 无缝集成。它自带连接池,但目前不支持查询缓存。
数据库之间切换
Prisma 的一个常见误区是"Schema 完全跨数据库可移植"。实际情况是:
- 业务查询代码(
prisma.user.findMany()等)基本可跨数据库复用——只要目标数据库也支持对应的字段类型和关系 - 迁移文件 不能跨数据库复用。
prisma migrate dev针对 MySQL 生成的ALTER TABLE语句和 PostgreSQL 版不同,要换数据库需要重新跑migrate dev生成一套新迁移 - 字段类型 有差异。比如 Prisma Schema 里写
String,在不同数据库里会被映射成不同的实际类型(PostgreSQL 的TEXTvs MySQL 的VARCHAR(191)),可以用@db.VarChar(255)这类属性精确控制底层类型
选择哪个
- 新项目没偏好:选 PostgreSQL——社区资源最多,功能最全,Prisma 对它的支持最成熟
- 已有 MySQL/MariaDB:直接接过来,Prisma 对 MySQL 支持也很完整
- Serverless 边缘应用:优先考虑 Supabase/Neon(Postgres)或 Turso(SQLite),配合 Accelerate 或自带连接池使用
- MongoDB 用户:Prisma v7 起 MongoDB 支持已很完整,v8 进一步提升了聚合管道和多态集合支持