跳至主要内容

使用 Prisma Migrate 部署数据库变更

要将挂起的迁移应用到暂存、测试或生产环境,请在您的 CI/CD 管道中运行 migrate deploy 命令

npx prisma migrate deploy
信息

本指南**不适用于 MongoDB**。
对于 MongoDB,使用 db push 而不是 migrate deploy

何时运行 prisma migrate deploy 取决于您的平台。例如,一个简化的 Heroku 工作流程包括

  1. 确保 ./prisma/migration 文件夹位于源代码控制中
  2. 发布阶段运行 prisma migrate deploy

理想情况下,migrate deploy 应该作为自动 CI/CD 管道的一部分,并且我们通常不建议在本地运行此命令来将更改部署到生产数据库(例如,通过临时更改 DATABASE_URL 环境变量)。将生产数据库 URL 存储在本地通常不被认为是好的做法。

请注意,要运行 prisma migrate deploy 命令,您需要访问通常添加到 devDependencies 中的 prisma 依赖项。某些平台(如 Vercel)会在构建期间修剪开发依赖项,从而阻止您调用该命令。可以通过将 prisma 设为生产依赖项(将其移动到 package.json 中的 dependencies 中)来解决此问题。有关 migrate deploy 命令的更多信息,请参阅

使用 GitHub Actions 部署数据库变更

作为 CI/CD 的一部分,您可以在管道中运行 prisma migrate deploy 以将挂起的迁移应用到您的生产数据库。

以下是一个针对您的数据库运行迁移操作的示例

deploy.yml
name: Deploy
on:
push:
paths:
- prisma/migrations/** # Only run this workflow when migrations are updated
branches:
- main

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
- name: Install dependencies
run: npm install
- name: Apply all pending migrations to the database
run: npx prisma migrate deploy
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}

确保您已将 DATABASE_URL 变量 设置为存储库中的机密,连接字符串周围不要加引号。