跳到主要內容

使用 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 命令,您需要存取通常添加到 devDependenciesprisma 相依性。某些平台(如 Vercel)會在建置期間修剪開發相依性,從而阻止您呼叫該命令。這可以透過將 prisma 作為生產相依性來解決,方法是將其移動到 package.json 中的 dependencies。有關 migrate deploy 命令的更多資訊,請參閱

使用 GitHub Actions 部署資料庫變更

作為 CI/CD 的一部分,您可以在管道中運行 prisma migrate deploy,以將待處理的遷移套用至您的生產資料庫。

以下是一個範例 action,它將對您的資料庫運行遷移

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 變數設定為您儲存庫中的 secret,連線字串周圍沒有引號。