Mise à niveau vers Prisma ORM 7
Guide complet pour migrer de Prisma ORM v6 vers v7. Cette mise à niveau introduit des changements significatifs autour du nouveau générateur prisma-client, des adaptateurs de driver, prisma.config.ts, du chargement explicite des variables d'environnement et des points d'entrée du client généré.
Quand appliquer
Référencez cette compétence quand :
- Vous effectuez une mise à niveau de Prisma v6 vers v7
- Vous mettez à jour le générateur
prisma-client - Vous configurez les adaptateurs de driver
- Vous configurez
prisma.config.ts - Vous corrigez des erreurs d'import après la mise à niveau
Catégories de règles par priorité
| Priorité | Catégorie | Impact | Préfixe |
|---|---|---|---|
| 1 | Migration du schéma | CRITIQUE | schema-changes |
| 2 | Connectivité de base de données | CRITIQUE | driver-adapters |
| 3 | Système de modules | CRITIQUE | esm-support |
| 4 | Configuration et variables d'env | ÉLEVÉE | prisma-config, env-variables |
| 5 | Fonctionnalités supprimées | ÉLEVÉE | removed-features |
| 6 | Accelerate | ÉLEVÉE | accelerate-users |
Référence rapide
schema-changes- migration du générateur, chemins de sortie obligatoires, points d'entrée générés et remplacement dePrisma.validatordriver-adapters- installation d'adaptateur obligatoire pour les fournisseurs SQL, différences de pools et choix de l'adaptateur Prisma Postgresesm-support- configuration ESM-first plus fallback CommonJS avecmoduleFormat = "cjs"prisma-config- création et utilisation deprisma.config.tsenv-variables- chargement explicite des variables d'environnementremoved-features- middleware supprimée, métriques et comportement CLI héritéaccelerate-users- notes de migration pour les utilisateurs d'Accelerate
Notes importantes
- Les projets MongoDB doivent rester sur Prisma 6.x - ne migrez pas les applications MongoDB vers le chemin du client SQL de Prisma 7
- Node.js 20.19.0+ requis
- TypeScript 5.4.0+ requis
- Dernière version stable de Prisma ORM :
7.6.0
Vue d'ensemble des étapes de mise à niveau
- Mettre à jour les packages vers v7
- Choisir votre format de module (
esmpar défaut,cjssi nécessaire) - Mettre à jour la configuration TypeScript
- Mettre à jour le bloc générateur du schéma
- Créer
prisma.config.ts - Installer et configurer un adaptateur de driver pour les fournisseurs SQL
- Mettre à jour les imports du client Prisma
- Mettre à jour l'instanciation du client
- Remplacer les motifs d'aide dépréciés comme
Prisma.validator - Exécuter
prisma generateet tester
Commandes de mise à niveau rapide
# Mettre à jour les packages
npm install @prisma/client@7
npm install -D prisma@7
# Installer un adaptateur de driver (PostgreSQL ou Prisma Postgres via TCP direct)
npm install @prisma/adapter-pg pg
# Installer dotenv pour le chargement des variables d'env
npm install dotenv
# Régénérer le client
npx prisma generate
Résumé des changements incompatibles
| Changement | v6 | v7 |
|---|---|---|
| Format de module | Implicite / mélangé | ESM-first, moduleFormat = "cjs" supporté |
| Fournisseur de générateur | prisma-client-js |
prisma-client est le défaut, tandis que prisma-client-js existe toujours pour les configurations hérités |
| Chemin de sortie | Auto (node_modules) | Explicite obligatoire |
| Adaptateurs de driver | Optionnel | Obligatoire pour les fournisseurs SQL |
| Fichier de configuration | .env + schéma |
prisma.config.ts |
| Chargement des variables d'env | Automatique | Manuel (dotenv) |
| Points d'entrée générés | Export de package unique | Points d'entrée client, browser, models, enums |
| Fragments de requête type-safe | Prisma.validator() |
TypeScript satisfies |
| Middleware | $use() |
Extensions client |
| Métriques | Fonctionnalité d'aperçu | Supprimée |
Fichiers de règles
Guides de migration détaillés pour chaque changement incompatible :
references/esm-support.md - Configuration ESM et CommonJS
references/schema-changes.md - Générateur, sortie, imports et points d'entrée générés
references/driver-adapters.md - Configuration requise de l'adaptateur de driver
references/prisma-config.md - Nouveau fichier de configuration
references/env-variables.md - Chargement des variables d'environnement
references/removed-features.md - Middleware, métriques et drapeaux CLI
references/accelerate-users.md - Gestion spéciale pour Accelerate
Migration pas à pas
1. Mettre à jour package.json pour les projets ESM-first
{
"type": "module"
}
Si vous avez besoin de rester sur CommonJS, conservez votre application en CJS et définissez moduleFormat = "cjs" dans le bloc générateur à la place de forcer ESM.
2. Mettre à jour tsconfig.json
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true
}
}
3. Mettre à jour schema.prisma
// Avant (v6)
generator client {
provider = "prisma-client-js"
}
// Après (v7)
generator client {
provider = "prisma-client"
output = "../generated/prisma"
// Optionnel si vous avez besoin de CommonJS :
// moduleFormat = "cjs"
}
4. Créer prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})
5. Installer un adaptateur de driver (fournisseurs SQL uniquement)
# PostgreSQL
npm install @prisma/adapter-pg pg
# MySQL
npm install @prisma/adapter-mariadb mariadb
# SQLite
npm install @prisma/adapter-better-sqlite3 better-sqlite3
# Prisma Postgres dans les applications Node.js standard (recommandé)
npm install @prisma/adapter-pg pg
# Driver serverless Prisma Postgres (edge/serverless)
npm install @prisma/adapter-ppg @prisma/ppg
# Neon
npm install @prisma/adapter-neon
MongoDB ne dispose pas d'un package SQL @prisma/adapter-* dans les packages Prisma 7.6.0 publiés. Si vous mettez à niveau un projet MongoDB, arrêtez-vous et conservez ce projet sur la dernière version de Prisma 6.x au lieu de suivre le chemin de migration standard de Prisma 7.
6. Mettre à jour l'instanciation du client
// Avant (v6)
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Après (v7)
import { PrismaClient } from '../generated/prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL
})
const prisma = new PrismaClient({ adapter })
7. Remplacer Prisma.validator par satisfies
import { Prisma } from '../generated/prisma/client'
const userSelect = {
id: true,
email: true,
name: true,
} satisfies Prisma.UserSelect
8. Exécuter les migrations et générer
npx prisma generate
npx prisma migrate dev # si nécessaire
Dépannage
Erreurs « Cannot find module »
- Vérifiez que le chemin de sortie du générateur
outputcorrespond à votre chemin d'import - Assurez-vous que
prisma generates'est exécuté avec succès
Erreurs de certificat SSL
- Ajoutez
ssl: { rejectUnauthorized: false }à la configuration de l'adaptateur si vous avez besoin de préserver l'ancien comportement - Ou configurez correctement vos certificats avec les paramètres
NODE_EXTRA_CA_CERTS/ OpenSSL CA
Problèmes de timeout de connexion
- Les adaptateurs de driver utilisent les défauts du driver sous-jacent, qui diffèrent de v6
- Configurez explicitement les paramètres de pool sur l'adaptateur si nécessaire
Ressources
- Guide officiel de mise à niveau v7
- Documentation des adaptateurs de driver
- Référence de configuration Prisma
Comment utiliser
Suivez d'abord references/schema-changes.md et references/driver-adapters.md, puis appliquez les fichiers de référence restants en fonction de la configuration de votre projet.