Prisma 7 完整入门指南:从零基础到生产部署
Prisma 7 是有史以来改动最大的版本,底层架构、配置方式、命令行为全换了。很多人升级后发现「老命令不好使了」「配置写哪不对了」。这篇帮你精简提炼核心内容,看完就能直接上手。
一、先搞懂 4 个核心变化(升级必看)
Prisma 7 最大的改动是把 Rust 查询引擎换成了纯 TypeScript,带来的直接好处:包体积减 90%、查询快 3 倍、Serverless 冷启动快 9 倍,部署兼容性更好。
同时有 4 个必须适应的破坏性改动:
ESM 优先:项目
package.json要加"type": "module"驱动单独装:不再内置数据库驱动,必须装对应适配器(比如 PostgreSQL 装
@prisma/adapter-pg)配置分家:新增
prisma.config.ts统一管数据库连接、迁移路径,schema.prisma只负责定义数据模型命令更「克制」:
migrate dev/db push不再自动生成客户端、不再自动跑种子脚本,都要手动执行
二、5 分钟快速上手
1. 装依赖
# 开发依赖
npm install -D prisma
# 生产依赖:客户端 + 数据库适配器 + 环境变量
npm install @prisma/client @prisma/adapter-pg dotenv
2. 初始化项目
npx prisma init --datasource-provider postgresql
生成两个核心文件:
prisma/schema.prisma:写数据模型prisma.config.ts:配数据库、迁移、种子
3. 配置数据库连接
// prisma.config.ts
import "dotenv/config";
import { defineConfig, env } from "prisma/config";
export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
path: "prisma/migrations",
seed: "tsx prisma/seed.ts",
},
datasource: {
url: env("DATABASE_URL"), // 从 .env 读取
},
});
4. 写数据模型
// prisma/schema.prisma
generator client {
provider = "prisma-client"
output = "../src/generated/prisma" // 必填,指定生成位置
}
datasource db {
provider = "postgresql"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
5. 生成客户端 + 创建迁移
# 生成类型安全的 Prisma Client
npx prisma generate
# 生成迁移并应用到数据库
npx prisma migrate dev --name init_user
6. 写第一个查询
import { PrismaClient } from "./generated/prisma";
import { PrismaPg } from "@prisma/adapter-pg";
// 7.x 必须传适配器
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL! });
const prisma = new PrismaClient({ adapter });
// 增删改查
const user = await prisma.user.create({ data: { name: "张三", email: "zhangsan@test.com" } });
const users = await prisma.user.findMany();
三、命令怎么选?一张表说清
最容易混淆的就是迁移类命令,记住这个对照表就行:
命令 | 生成迁移文件 | 修改数据库 | 用在什么环境 | 核心用途 |
|---|---|---|---|---|
| ✅ 是 | ✅ 是 | 仅开发环境 | 团队开发,保留完整变更历史 |
| ❌ 否 | ✅ 是 | 生产 / 测试环境 | 部署已有迁移,CI/CD 只用它 |
| ❌ 否 | ✅ 是 | 仅开发环境 | 个人 demo、快速原型迭代 |
| ❌ 否 | ❌ 否 | 所有环境 | 从老数据库反向生成模型 |
| ❌ 否 | ❌ 否 | 所有环境 | 改完 schema 必须跑,更新类型 |
极简决策树
改了 schema.prisma?
├─ 个人项目/快速试错 → db push + generate
└─ 团队项目/要上生产 → migrate dev --name xxx + generate
数据库手动改了? → db pull + generate
要上线? → 只跑 migrate deploy
四、Prisma Client 核心要点
1. 初始化必写适配器
这是 7.x 最容易踩的坑,不装适配器、不传 adapter 参数,连不上数据库。
const prisma = new PrismaClient({
adapter,
// 7.8.0 新增:查询计划缓存大小,默认1000
queryPlanCacheMaxSize: 1000,
});
内存紧张的 Serverless 环境可以调小
设为 0 完全禁用缓存
2. 常用 CRUD 速记
// 增
prisma.user.create({ data: {...} })
prisma.user.createMany({ data: [...] })
// 查
prisma.user.findUnique({ where: { id: 1 } })
prisma.user.findMany({ where: {...}, orderBy: {...}, take: 10 })
// 改
prisma.user.update({ where: {...}, data: {...} })
// 删
prisma.user.delete({ where: {...} })
五、标准工作流
日常开发
改
schema.prisma跑
prisma migrate dev --name 变更描述跑
prisma generate写业务代码,提交到 Git
生产部署
CI/CD 里只执行一条:
npx prisma migrate deploy
老数据库接入
配好数据库地址
跑
prisma db pull自动生成模型跑
prisma generate生成客户端
六、最容易踩的 7 个坑
忘了装适配器:启动连不上库 → 装对应
@prisma/adapter-xxx,初始化时传入改了 schema 类型不更新:7.x 不自动生成 → 手动跑
prisma generate生产跑了 migrate dev:可能删库 → 生产永远只跑
migrate deploy读不到环境变量:7.x 不自动加载
.env→ 配置文件顶部加import "dotenv/config"迁移失败怎么办:开发环境直接
prisma migrate reset重置;生产环境手动修复后用prisma migrate resolve标记状态Nginx 反向代理 502:服务没启动 / 端口不对 / 没监听 0.0.0.0 → 启动时加
HOSTNAME=0.0.0.0MongoDB 用不了:7.x 暂不支持 MongoDB → 先留在 6.x 版本
评论区
评论功能需要登录后才能使用
暂无评论,成为第一个留言的人吧