prisma-upgrade-v7

Guide de migration complet de Prisma ORM v6 vers v7, couvrant tous les changements incompatibles. À utiliser lors de la mise à niveau des versions Prisma, en cas d'erreurs v7, ou pour la migration de projets existants. Se déclenche sur « upgrade to prisma 7 », « prisma 7 migration », « prisma-client generator », « driver adapter required ».

npx skills add https://github.com/prisma/skills --skill prisma-upgrade-v7

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 de Prisma.validator
  • driver-adapters - installation d'adaptateur obligatoire pour les fournisseurs SQL, différences de pools et choix de l'adaptateur Prisma Postgres
  • esm-support - configuration ESM-first plus fallback CommonJS avec moduleFormat = "cjs"
  • prisma-config - création et utilisation de prisma.config.ts
  • env-variables - chargement explicite des variables d'environnement
  • removed-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

  1. Mettre à jour les packages vers v7
  2. Choisir votre format de module (esm par défaut, cjs si nécessaire)
  3. Mettre à jour la configuration TypeScript
  4. Mettre à jour le bloc générateur du schéma
  5. Créer prisma.config.ts
  6. Installer et configurer un adaptateur de driver pour les fournisseurs SQL
  7. Mettre à jour les imports du client Prisma
  8. Mettre à jour l'instanciation du client
  9. Remplacer les motifs d'aide dépréciés comme Prisma.validator
  10. Exécuter prisma generate et 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 output correspond à votre chemin d'import
  • Assurez-vous que prisma generate s'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

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.

Skills similaires