SuperAPI AI 工具集

prisma-cli-migrate-deploy

部署与运维

查看项目

更新于 10-16 03:59

技能介绍

用途

prisma migrate deploy 用于在生产或预发布(staging)环境中应用待执行的数据库迁移。它面向的是非开发环境,是 Prisma 迁移工作流中负责“部署”环节的命令。

主要能力

  • 应用 prisma/migrations/ 目录下所有待执行的迁移。
  • 更新 _prisma_migrations 表,记录迁移的应用状态。
  • 不会生成新的迁移文件。
  • 不会运行种子(seed)脚本。
  • 适合在 CI/CD 和生产环境中安全使用。

使用方式

基本命令:

prisma migrate deploy

可用选项:

  • --schema:指定自定义的 Prisma schema 路径。
  • --config:指定自定义的 Prisma 配置文件路径。

在 CI/CD 流水线中使用(GitHub Actions 示例):

# GitHub Actions example
- name: Apply migrations
  run: npx prisma migrate deploy
  env:
    DATABASE_URL: ${{ secrets.DATABASE_URL }}

在 Docker 部署中使用(启动应用前先运行迁移):

# Run migrations before starting app
CMD npx prisma migrate deploy && node dist/index.js

配置方面,需确保 prisma.config.ts 中包含生产数据库 URL:

import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
  datasource: {
    url: env('DATABASE_URL'),
  },
})

适用场景

  • 生产环境部署。
  • 预发布(staging)环境。
  • CI/CD 流水线。
  • 任何非开发环境。

与 migrate dev 的对比

特性 migrate dev migrate deploy
创建迁移 是 否
应用迁移 是 是
检测漂移 是 否
交互提示输入 是 否
使用影子数据库 是 否
生产环境安全 否 是
出问题时 提示 失败

生产工作流

  1. 开发阶段:在本地创建迁移。
prisma migrate dev --name add_feature
  1. 提交:将迁移文件纳入版本控制。
git add prisma/migrations
git commit -m "Add feature migration"
  1. 部署:在生产环境应用。
prisma migrate deploy

错误处理

迁移失败时:

如果某个迁移失败,migrate deploy 会以错误退出,该失败迁移会在 _prisma_migrations 中被标记为 failed。修复步骤:

  1. 解决问题(修复 SQL、数据库状态等)。
  2. 标记为已解决:prisma migrate resolve --applied <migration_name>。
  3. 重新运行:prisma migrate deploy。

部署前先检查状态:

prisma migrate status

该命令会显示待执行和已应用的迁移。

最佳实践

  • 在 CI 中始终先运行 migrate status,再运行 migrate deploy。
  • 准备回滚方案(迁移前备份)。
  • 先在 staging 环境测试迁移。
  • 切勿在生产环境使用 migrate dev。

限制

该命令不会生成新迁移,也不会运行种子脚本;不检测漂移,不进行交互提示,不使用影子数据库;遇到问题直接失败而非重置。