返回首页
数据库

Prisma 7 完整入门指南:从零基础到生产部署

2026/7/29阅读: 31313 字 / 预计 6 分钟

Prisma 7 是有史以来改动最大的版本,底层架构、配置方式、命令行为全换了。很多人升级后发现「老命令不好使了」「配置写哪不对了」。这篇帮你精简提炼核心内容,看完就能直接上手。

一、先搞懂 4 个核心变化(升级必看)

Prisma 7 最大的改动是把 Rust 查询引擎换成了纯 TypeScript,带来的直接好处:包体积减 90%、查询快 3 倍、Serverless 冷启动快 9 倍,部署兼容性更好。

同时有 4 个必须适应的破坏性改动:

  1. ESM 优先:项目 package.json 要加 "type": "module"

  2. 驱动单独装:不再内置数据库驱动,必须装对应适配器(比如 PostgreSQL 装 @prisma/adapter-pg

  3. 配置分家:新增 prisma.config.ts 统一管数据库连接、迁移路径,schema.prisma 只负责定义数据模型

  4. 命令更「克制」migrate dev / db push 不再自动生成客户端、不再自动跑种子脚本,都要手动执行

二、5 分钟快速上手

1. 装依赖

bash
# 开发依赖
npm install -D prisma
# 生产依赖:客户端 + 数据库适配器 + 环境变量
npm install @prisma/client @prisma/adapter-pg dotenv

2. 初始化项目

bash
npx prisma init --datasource-provider postgresql

生成两个核心文件:

  • prisma/schema.prisma:写数据模型

  • prisma.config.ts:配数据库、迁移、种子

3. 配置数据库连接

typescript
// 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. 写数据模型

text
// 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. 生成客户端 + 创建迁移

bash
# 生成类型安全的 Prisma Client
npx prisma generate

# 生成迁移并应用到数据库
npx prisma migrate dev --name init_user

6. 写第一个查询

typescript
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();

三、命令怎么选?一张表说清

最容易混淆的就是迁移类命令,记住这个对照表就行:

命令

生成迁移文件

修改数据库

用在什么环境

核心用途

prisma migrate dev

✅ 是

✅ 是

仅开发环境

团队开发,保留完整变更历史

prisma migrate deploy

❌ 否

✅ 是

生产 / 测试环境

部署已有迁移,CI/CD 只用它

prisma db push

❌ 否

✅ 是

仅开发环境

个人 demo、快速原型迭代

prisma db pull

❌ 否

❌ 否

所有环境

从老数据库反向生成模型

prisma generate

❌ 否

❌ 否

所有环境

改完 schema 必须跑,更新类型

极简决策树

javascript
改了 schema.prisma?
├─ 个人项目/快速试错 → db push + generate
└─ 团队项目/要上生产 → migrate dev --name xxx + generate

数据库手动改了? → db pull + generate

要上线? → 只跑 migrate deploy

四、Prisma Client 核心要点

1. 初始化必写适配器

这是 7.x 最容易踩的坑,不装适配器、不传 adapter 参数,连不上数据库。

typescript
const prisma = new PrismaClient({
  adapter,
  // 7.8.0 新增:查询计划缓存大小,默认1000
  queryPlanCacheMaxSize: 1000,
});
  • 内存紧张的 Serverless 环境可以调小

  • 设为 0 完全禁用缓存

2. 常用 CRUD 速记

typescript
// 增
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: {...} })

五、标准工作流

日常开发

  1. schema.prisma

  2. prisma migrate dev --name 变更描述

  3. prisma generate

  4. 写业务代码,提交到 Git

生产部署

CI/CD 里只执行一条:

bash
npx prisma migrate deploy

老数据库接入

  1. 配好数据库地址

  2. prisma db pull 自动生成模型

  3. prisma generate 生成客户端

六、最容易踩的 7 个坑

  1. 忘了装适配器:启动连不上库 → 装对应 @prisma/adapter-xxx,初始化时传入

  2. 改了 schema 类型不更新:7.x 不自动生成 → 手动跑 prisma generate

  3. 生产跑了 migrate dev:可能删库 → 生产永远只跑 migrate deploy

  4. 读不到环境变量:7.x 不自动加载 .env → 配置文件顶部加 import "dotenv/config"

  5. 迁移失败怎么办:开发环境直接 prisma migrate reset 重置;生产环境手动修复后用 prisma migrate resolve 标记状态

  6. Nginx 反向代理 502:服务没启动 / 端口不对 / 没监听 0.0.0.0 → 启动时加 HOSTNAME=0.0.0.0

  7. MongoDB 用不了:7.x 暂不支持 MongoDB → 先留在 6.x 版本

标签:#数据库

评论区

审核机制已开启

评论功能需要登录后才能使用

暂无评论,成为第一个留言的人吧