Skip to content
返回部署

Prisma Migrate

类型安全 ORM 迁移用于 Postgres、MySQL、MongoDB 和 SQLite。

CI/CD进阶

为什么

Prisma Migrate 从 schema 变更生成 SQL,类型安全客户端重新生成。处理开发迁移、生产部署和迁移历史。

DORA 2024 DevOps 状态报告显示精英团队部署频率比低绩效团队高 973 倍。带自动化测试的 CI/CD 管道将变更失败率降至 5-15%,而手动部署为 40-60%。

何时使用

Prisma ORM 类型安全 DB 访问用 Prisma Migrate。非 Prisma 项目避免。

如何做

1. Schema — schema.prisma 配 datasource + generator 2. 开发 — npx prisma migrate dev --name init(创建 + 应用) 3. 部署 — npx prisma migrate deploy(生产,应用待定) 4. 重置 — npx prisma migrate reset(仅开发,丢数据) 5. 状态 — npx prisma migrate status 6. Studio — npx prisma studio(数据 GUI) 7. 生成 — npx prisma generate(重新生成客户端)

示例

// schema.prisma generator client { provider = "prisma-client-js" } datasource db { provider = "postgresql"; url = env("DATABASE_URL") } model User { id Int @id @default(autoIncrement()) email String @unique posts Post[] } model Post { id Int @id @default(autoIncrement()); author User @relation(fields: [authorId], references: [id]); authorId Int } # 开发 — 创建并应用迁移 npx prisma migrate dev --name add_posts # 生产 — 仅应用待定迁移 npx prisma migrate deploy # CI 中 — 迁移后生成客户端 npx prisma migrate deploy && npx prisma generate

常见问题

  • ⚠迁移漂移 — schema 和迁移不同步,运行 prisma migrate dev 调和
  • ⚠影子 DB 错误 — 开发迁移需 CREATE DATABASE 权限
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓生产用 migrate deploy — 仅应用待定,无新迁移
  • ✓迁移提交 git — 团队共享迁移历史
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答