Prisma 命令速查

Prisma Schema 迁移、Client 生成、Studio 调试、缓存清理的完整命令速查。

#tech / ops / database #type / howto #status / evergreen

[!info] related notes

Prisma 命令速查

核心概念

schema.prisma      数据模型定义(表结构、关系、枚举)
prisma/migrations/  迁移文件(SQL 变更历史)
node_modules/.prisma/  生成的 Client 代码

工作流:修改 schema → 生成迁移 → 应用到数据库 → 生成 Client → 代码中使用。


Schema 管理

命令说明常用示例
pnpm exec prisma init初始化 Prisma(生成 schema 模板)pnpm exec prisma init
pnpm exec prisma validate验证 schema 语法有效性pnpm exec prisma validate
pnpm exec prisma format格式化 schema 文件pnpm exec prisma format
pnpm exec prisma generate根据 schema 生成 Prisma Client修改 schema 后必须执行
pnpm exec prisma generate --no-engine生成无引擎 Client(更小体积)适用于 Edge Runtime

数据库迁移

命令说明常用示例
pnpm exec prisma migrate dev创建并应用迁移(开发环境)pnpm exec prisma migrate dev --name init
pnpm exec prisma migrate dev --name <name>命名迁移pnpm exec prisma migrate dev --name add-user-table
pnpm exec prisma migrate deploy应用迁移(生产环境)CI/CD 中使用,不创建新迁移
pnpm exec prisma migrate status查看迁移状态检查哪些迁移已应用/待应用
pnpm exec prisma migrate reset重置数据库(删除所有数据并重新迁移)开发环境重建
pnpm exec prisma migrate resolve --applied <name>手动标记迁移为已应用修复迁移状态
pnpm exec prisma migrate resolve --rolled-back <name>手动标记迁移为已回滚修复迁移状态
pnpm exec prisma db push直接同步 schema 到数据库(不生成迁移文件)快速原型开发
pnpm exec prisma db push --force-reset强制重置并同步重建表结构
pnpm exec prisma db push --accept-data-loss接受数据丢失并同步允许删除列/表
pnpm exec prisma db pull从数据库反向同步到 schema拉取现有数据库结构

Prisma Studio(可视化)

命令说明
pnpm exec prisma studio打开 Prisma Studio Web UI(默认端口 5555)
pnpm exec prisma studio --port 3000指定端口打开

Docker 环境中的 Prisma

命令说明常用示例
docker exec <container> pnpm prisma db push在容器中同步 schemadocker exec my-api pnpm prisma db push --skip-generate
docker exec <container> pnpm prisma migrate deploy在容器中应用迁移docker exec my-api pnpm prisma migrate deploy
docker exec <container> pnpm prisma generate在容器中生成 Clientdocker exec my-api pnpm prisma generate

缓存清理

当 Prisma Client 出现类型不一致或奇怪的错误时:

方法命令说明
删除生成的 Client(推荐)rm -rf node_modules/.prisma && rm -rf node_modules/@prisma/client && pnpm prisma generate彻底清理并重新生成
内置清理pnpm prisma generate --no-engine && pnpm prisma generate先生成无引擎版本再重新生成
重启 Node.jsCtrl+C 停止服务 → 重新启动最简单,Node.js 重新加载模块
环境变量强制重新生成PRISMA_SKIP_POSTINSTALL_GENERATE=false pnpm prisma generate强制触发重新生成

Schema 配置速查

数据源 (datasource)

datasource db {
  provider = "postgresql"  // postgresql | mysql | sqlite | sqlserver | mongodb
  url      = env("DATABASE_URL")
}

生成器 (generator)

generator client {
  provider = "prisma-client-js"
  // previewFeatures = ["multiSchema"]  // 可选:启用预览特性
}

模型定义示例

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt

  @@map("users")  // 映射到数据库表名
}

model Post {
  id       Int    @id @default(autoincrement())
  title    String
  content  String?
  author   User   @relation(fields: [authorId], references: [id])
  authorId Int

  @@index([authorId])  // 添加索引
}

常见问题速查

问题原因解决方案
PrismaClientKnownRequestErrorClient 与 schema 不匹配重新 prisma generate
类型不一致缓存了旧的 Client删除 node_modules/.prisma 后重新生成
Environment variable not found: DATABASE_URL.env 文件缺失或路径不对检查 .env 文件位置和变量名
P1001: Can't reach database server数据库连接失败检查 DATABASE_URL、网络、数据库服务状态
P3006: Migration ... failed to apply迁移 SQL 执行失败检查数据库权限、手动修复后 migrate resolve
db pushmigrate 混用导致状态混乱不要混用开发用 migrate dev,原型用 db push,生产用 migrate deploy
容器中 schema 变更不生效需要重新构建或 execdocker exec 执行 prisma generate
创建于 2025/1/1 更新于 2026/7/15