prisma-upgrade-v7 是做什麼的?
從 Prisma ORM v6 升級至 v7 的完整遷移指南,涵蓋所有重大變更。適用於升級 Prisma 版本、遇到 v7 錯誤或遷移現有專案時使用。觸發關鍵字:「升級至 Prisma 7」、「Prisma 7 遷移」、「Prisma-client 生成器」、「需要驅動轉接器」。
概述
Prisma ORM v7 引入了多項重大變更,主要影響包括:
- Prisma Client 生成器:
prisma-client生成器已被取代,需使用@prisma/generator-client。 - 驅動轉接器:現在強制要求使用驅動轉接器,以支援不同資料庫。
- API 行為調整:部分查詢和寫入 API 的行為有所變更。
遷移步驟
1. 更新 Prisma CLI 和客戶端
首先更新 prisma 和 @prisma/client 至 v7:
npm install prisma@latest @prisma/client@latest
2. 變更 Prisma Client 生成器
在 schema.prisma 中將生成器從 prisma-client 改為 @prisma/generator-client:
generator client {
provider = "@prisma/generator-client"
}
3. 設定驅動轉接器
Prisma v7 要求明確指定驅動轉接器。根據您的資料庫選擇:
- PostgreSQL:使用
@prisma/adapter-pg - MySQL:使用
@prisma/adapter-mysql - SQLite:使用
@prisma/adapter-sqlite
範例安裝:
npm install @prisma/adapter-pg
然後在 schema.prisma 中指定:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
adapter = "@prisma/adapter-pg"
}
4. 生成 Prisma Client
執行生成命令:
npx prisma generate
5. 更新應用程式程式碼
檢查所有 Prisma Client 的使用位置,特別注意:
- 查詢結果的型別可能已變更。
- 部分方法名稱或參數已調整。
- 驅動轉接器需要初始化並傳遞至 Prisma Client。
範例更新:
import { PrismaClient } from '@prisma/client'
import { pg } from '@prisma/adapter-pg'
const adapter = new pg()
const prisma = new PrismaClient({ adapter })
常見問題
Q: 為什麼需要驅動轉接器?
A: Prisma v7 將資料庫連接抽象化,以便支援更多資料庫和更靈活的連接管理。驅動轉接器是必需的。
Q: 我的專案中有多個 Prisma Client 生成器,該如何處理?
A: 所有生成器都必須更新為 @prisma/generator-client。
Q: 遷移後效能會受影響嗎?
A: 通常不會,但建議使用最新版本的驅動轉接器以獲得最佳效能。
參考資源
注意事項
- 務必在升級前備份資料庫。
- 檢查專案中是否有任何第三方套件相依於 Prisma v6,並確認它們是否相容於 v7。
- 升級完成後執行完整的測試套件,以確保一切正常運作。