prisma-upgrade-v7-driver-adapters

作者: prisma

驅動程式適配器。使用此 Prisma 功能時的參考。

npx skills add https://github.com/prisma/cursor-plugin --skill prisma-upgrade-v7-driver-adapters

Driver Adapters

Prisma v7 requires driver adapters for all database connections. This replaces the built-in Rust query engine.

Why Driver Adapters?

  • No more binary downloads
  • Smaller bundle size
  • Better serverless/edge compatibility
  • Uses native Node.js database drivers
  • More control over connection pooling

Available Adapters

DatabaseAdapter PackageUnderlying Driver
PostgreSQL@prisma/adapter-pgpg
MySQL / MariaDB@prisma/adapter-mariadbmariadb
SQLite@prisma/adapter-better-sqlite3better-sqlite3
Prisma Postgres@prisma/adapter-ppg@prisma/ppg
SQL Server@prisma/adapter-mssqlmssql
Neon@prisma/adapter-neon@neondatabase/serverless
PlanetScale@prisma/adapter-planetscale@planetscale/database
Turso/libSQL@prisma/adapter-libsql@libsql/client
D1 (Cloudflare)@prisma/adapter-d1Cloudflare D1

Installation

PostgreSQL

npm install @prisma/adapter-pg

MySQL

npm install @prisma/adapter-mariadb mariadb

SQLite

npm install @prisma/adapter-better-sqlite3

Prisma Postgres

npm install @prisma/adapter-ppg @prisma/ppg

SQL Server

npm install @prisma/adapter-mssql mssql

Configuration

PostgreSQL

import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

MySQL

import { PrismaClient } from '../generated/client'
import { PrismaMariaDb } from '@prisma/adapter-mariadb'

const adapter = new PrismaMariaDb({
  host: 'localhost',
  port: 3306,
  connectionLimit: 5,
  user: process.env.MYSQL_USER,
  password: process.env.MYSQL_PASSWORD,
  database: process.env.MYSQL_DATABASE,
})

const prisma = new PrismaClient({ adapter })

SQLite

import { PrismaClient } from '../generated/client'
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'

const adapter = new PrismaBetterSqlite3({
  url: process.env.DATABASE_URL || 'file:./dev.db'
})

const prisma = new PrismaClient({ adapter })

Neon (Serverless PostgreSQL)

import { PrismaClient } from '../generated/client'
import { PrismaNeon } from '@prisma/adapter-neon'

const adapter = new PrismaNeon({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

Prisma Postgres

import { PrismaClient } from '../generated/client'
import { PrismaPostgresAdapter } from '@prisma/adapter-ppg'

const prisma = new PrismaClient({
  adapter: new PrismaPostgresAdapter({
    connectionString: process.env.PRISMA_DIRECT_TCP_URL,
  }),
})

SQL Server

import { PrismaClient } from '../generated/client'
import { PrismaMssql } from '@prisma/adapter-mssql'

const adapter = new PrismaMssql({
  server: 'localhost',
  port: 1433,
  database: 'mydb',
  user: process.env.SQLSERVER_USER,
  password: process.env.SQLSERVER_PASSWORD,
  options: {
    encrypt: true,
    trustServerCertificate: true,
  },
})

const prisma = new PrismaClient({ adapter })

Connection Pool Configuration

Driver adapters use the underlying driver's pool settings, which differ from v6 defaults.

PostgreSQL with custom pool

import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL,
  // Pool configuration
  max: 10,                    // Maximum connections
  idleTimeoutMillis: 30000,   // Close idle connections after 30s
  connectionTimeoutMillis: 5000, // Connection timeout (v6 default was 5s)
})

Matching v6 behavior

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL,
  connectionTimeoutMillis: 5000,  // v6 used 5 second timeout
})

SSL Configuration

Accept self-signed certificates

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false  // Accept self-signed certs
  }
})

Proper SSL configuration

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    ca: fs.readFileSync('/path/to/ca-cert.pem'),
    rejectUnauthorized: true
  }
})

Migration from v6

Before (v6)

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient({
  datasources: {
    db: { url: process.env.DATABASE_URL }
  }
})

After (v7)

import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL
})

const prisma = new PrismaClient({ adapter })

Singleton Pattern

// lib/prisma.ts
import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'

const globalForPrisma = globalThis as unknown as {
  prisma: PrismaClient | undefined
}

const adapter = new PrismaPg({
  connectionString: process.env.DATABASE_URL!
})

export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter })

if (process.env.NODE_ENV !== 'production') {
  globalForPrisma.prisma = prisma
}

來自 prisma 的更多技能

prisma-cli-migrate-reset
prisma
prisma migrate reset
official
prisma-cli-validate
prisma
prisma validate。使用此 Prisma 功能時的參考。
official
prisma-next-extension-upgrade
prisma
Upgrade Prisma Next in your extension. Bumps every `@prisma-next/*` dependency to the requested target (or npm `latest`), runs the per-transition upgrade…
official
adr-review
prisma
以全新的視角(如同沒有先前背景的團隊成員)審查一或多個 ADR,找出敘事與結構上的問題,然後重新撰寫。適用於當…
official
prisma-next-upgrade
prisma
Upgrade Prisma Next in your app. Bumps every `@prisma-next/*` dependency from the version pinned in the lockfile to the requested target (or npm `latest`),…
official
prisma-cli
prisma
Prisma CLI 指令、選項及工作流程的完整參考,涵蓋設定、遷移與資料庫操作。包含 20 多個按優先順序組織的指令:設定(init)、生成(generate)、開發(dev)、資料庫操作(db pull/push/seed/execute)以及遷移(migrate dev/deploy/reset/status/diff/resolve)。包含 Prisma 7.x 的變更:新的 prisma.config.ts 設定檔、已移除的旗標(--skip-generate、--skip-seed、--schema、--url)以及明確...
official
prisma-client-api
prisma
完整的 Prisma Client API 參考,涵蓋模型查詢、CRUD 操作、過濾、關聯與事務。包含 17 種模型查詢方法,如 findUnique、findMany、create、update、delete、upsert 及批量操作與回傳變體。提供查詢選項以塑造結果:select、include、omit、orderBy、take、skip、cursor 與 distinct。包含標量與邏輯過濾運算子(equals、in、contains、startsWith、lt、gt)以及關聯過濾(some、...)
official
prisma-compute
prisma
Prisma Compute deployment and hosting guide. Use whenever the user mentions Prisma Compute, `prisma.compute.ts`, `defineComputeConfig`, deploying or hosting a Prisma app, `@prisma/cli app deploy`, `compute:deploy`, `create-prisma --deploy`, `PRISMA_SERVICE_TOKEN`, `auth workspace`, Compute apps/deployments/build logs/domains, `@prisma/cli agent install`, localhost vs `0.0.0.0`, deploy port binding, or framework deploy readiness for Hono, Elysia, Next.js, TanStack Start, Astro, Nuxt, Svelte,...
developmentdevopsofficial