Prisma 常用指令整理
最近在使用 Prisma 開發時,整理了一份常用 CLI 指令的筆記,方便日後查閱。這篇文章涵蓋了從開發到部署各階段會用到的指令,以及它們之間的關鍵差異。
指令總覽
| 指令 | 用途 | 適用場景 |
|---|---|---|
prisma generate | 根據 schema.prisma 產生 Prisma Client(TypeScript 型別) | 改了 schema 之後,讓程式碼能認識新的 model/欄位 |
prisma migrate dev | 比對 schema 變更 → 產生 migration SQL → 套用到 DB → 執行 generate | 本地開發新增/修改 schema 時 |
prisma migrate deploy | 只跑未套用的 migration,不產生新 migration | CI/CD、VPS 部署時 |
prisma db push | 直接把 schema 推到 DB,不建立 migration 檔 | 快速原型、實驗(不需追蹤歷史) |
prisma db pull | 從現有 DB 反向產生 schema.prisma | 接手已存在的 DB,想用 Prisma 管理 |
prisma migrate status | 檢查 migration 套用狀態 | 部署前確認 |
prisma migrate diff | 比對兩個 schema 的差異,輸出 SQL | Debug drift 問題 |
prisma studio | 開瀏覽器 GUI 看/編輯 DB 資料 | 快速查資料 |
常見工作流程
開發中改 schema
# 1. 修改 schema.prisma
# 2. 產生 migration 並套用
npx prisma migrate dev --name "描述"
# → 自動:產生 migration SQL + 套用到 DB + generate
部署到 VPS
# 1. 套用 pending migrations
npx prisma migrate deploy
# 2. 產生 client
npx prisma generate
快速實驗 schema(不留 migration)
npx prisma db push
只改了 schema 但 DB 沒變
例如改 relation name 這類不影響資料庫結構的變更:
npx prisma generate
關鍵差異
搞清楚這四個指令的差異,基本上就不會搞混了:
migrate dev:開發用,會互動式問你 migration 名稱,建立 migration 檔案,適合需要追蹤 schema 變更歷史的正式開發流程。migrate deploy:部署用,只跑已存在的 migration 檔,不會建新的,確保各環境的 DB schema 一致。db push:快速同步,不留歷史紀錄,適合原型階段或實驗性質的開發。generate:只更新 TypeScript 型別,完全不碰資料庫。
簡單來說,正式開發用 migrate dev,部署用 migrate deploy,試東西用 db push,改型別用 generate。