Migrer vers Prisma 7 : tout ce qui change (et casse)

Tutoriel
7 min de lecture

Pourquoi Prisma 7 casse tout

Prisma 7 est la plus grosse mise à jour depuis la v1. Le changement principal : les driver adapters deviennent obligatoires. Fini le new PrismaClient() tout nu, il faut maintenant passer explicitement un adapter de connexion.

Les 3 changements critiques

1. Driver adapters obligatoires

// ❌ Avant (Prisma 6)
const prisma = new PrismaClient()

// ✅ Après (Prisma 7)
import { PrismaPg } from "@prisma/adapter-pg"
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })

2. Plus de URL dans schema.prisma

La propriété url disparaît du datasource. La connexion se configure dans un nouveau fichier prisma.config.ts :

// prisma.config.ts
import { defineConfig } from "prisma/config"
export default defineConfig({
  schema: "prisma/schema.prisma",
  datasource: { url: process.env.DATABASE_URL },
})

3. Nouveaux packages nécessaires

pnpm add @prisma/adapter-pg pg
pnpm add -D @types/pg

Migration pas à pas

  1. Installer les packages adapter
  2. Créer prisma.config.ts
  3. Supprimer url du schema.prisma
  4. Mettre à jour le singleton PrismaClient dans src/lib/db.ts
  5. Mettre à jour le seed script
  6. Tester : npx prisma db push puis pnpm build

Piège courant avec Next.js

Le pattern singleton change aussi. L'adapter doit être créé à l'intérieur de la factory function pour éviter les problèmes de hot reload en dev :

const createPrismaClient = () => {
  const adapter = new PrismaPg({ connectionString })
  return new PrismaClient({ adapter })
}
const globalForPrisma = globalThis as unknown as {
  prisma: ReturnType<typeof createPrismaClient> | undefined
}
export const prisma = globalForPrisma.prisma ?? createPrismaClient()
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma

Verdict

La migration prend 15-30 minutes. Le plus dur n'est pas le code, c'est de comprendre pourquoi ça casse. Les driver adapters permettent un meilleur contrôle de la connexion, notamment pour les edge runtimes et les serverless platforms comme Neon ou PlanetScale.

Envie d'en discuter ?

Réservez un appel pour parler de vos projets SaaS ou de vos besoins en consultant Claude Code.

Réserver un appel gratuit