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,不產生新 migrationCI/CD、VPS 部署時
prisma db push直接把 schema 推到 DB,不建立 migration 檔快速原型、實驗(不需追蹤歷史)
prisma db pull從現有 DB 反向產生 schema.prisma接手已存在的 DB,想用 Prisma 管理
prisma migrate status檢查 migration 套用狀態部署前確認
prisma migrate diff比對兩個 schema 的差異,輸出 SQLDebug 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