Déclencheurs
- prisma
- orm
- database
- schema
- migration
- prisma client
- prisma migrate
- prisma studio
- db schema
- data model
Liens
- Guide de mise à jour (v7) : https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-7
- Référence de configuration Prisma : https://www.prisma.io/docs/orm/reference/prisma-config-reference
- Extensions Prisma Client : https://www.prisma.io/docs/orm/prisma-client/client-extensions
- Prompt de migration Prisma 7 (agents IA) : https://www.prisma.io/docs/ai/prompts/prisma-7
Mise à jour
# Mettre à jour les dépendances
pnpm add @prisma/client@7
pnpm add -D prisma@7
Changements majeurs (v7)
Versions minimales
- Node.js : 20.19.0+ (et 22.x)
- TypeScript : 5.4.0+
Prisma est maintenant ESM
- Prisma ORM est distribué sous forme de modules ES.
- Définissez
"type": "module"danspackage.json(ou migrez votre projet vers ESM). - Les projets TypeScript doivent compiler/résoudre ESM (exemple de guide :
module: ESNext,target: ES2023,moduleResolution: node).
Modifications du schéma Prisma et de la génération
- Fournisseur du générateur :
prisma-client-js→prisma-client. outputest obligatoire dansgenerator client.- Prisma Client n'est plus généré dans
node_modulespar défaut. - Après
npx prisma generate, mettez à jour les imports vers votre chemin de sortie généré (exemple :import { PrismaClient } from './generated/prisma/client').
Dépréciation de la datasource du schéma :
url,directUrl,shadowDatabaseUrldansschema.prismasont dépréciés.- Déplacez la configuration de la datasource vers
prisma.config.ts(Prisma Config). - Si vous utilisiez
directUrlpour les migrations, définissez la chaîne de connexion de migration CLI dansprisma.config.ts.
Adaptateurs de pilote requis pour Prisma Client (nouvelle instanciation)
- La création de Prisma Client nécessite maintenant un adaptateur de pilote pour toutes les bases de données.
- Exemples d'adaptateurs :
- Postgres :
@prisma/adapter-pg(utilisezPrismaPgavec une chaîne de connexion DB directe) - SQLite :
@prisma/adapter-better-sqlite3
- Postgres :
Utilisateurs de Prisma Accelerate (v6 → v7)
- Ne transmettez pas les URLs Accelerate
prisma://ouprisma+postgres://à un adaptateur de pilote. - Conservez l'URL Accelerate et instanciez Prisma Client avec l'extension Accelerate à la place.
Les variables d'env ne sont pas chargées par défaut
- Prisma CLI ne charge plus automatiquement les fichiers
.enven v7. - Chargez explicitement les variables d'env (par exemple
import 'dotenv/config'dansprisma.config.ts, ou chargez l'env dans vos scripts). - Utilisateurs de Bun : aucun changement requis (bun charge
.envautomatiquement).
La configuration de Prisma CLI a été déplacée vers prisma.config.ts
- Prisma Config est maintenant l'endroit par défaut pour configurer le comportement de Prisma CLI.
- Placez
prisma.config.tsà la racine du projet (à côté depackage.json). - Configurez le chemin du schéma, le chemin des migrations/seed et l'URL de la datasource là-bas.
Middleware client supprimé
prisma.$use(...)a été supprimé.- Migrez la logique middleware vers les extensions Prisma Client.
Les métriques supprimées des extensions Prisma Client
- La fonctionnalité de prévisualisation Metrics est supprimée en v7.
- Utilisez votre pilote/adaptateur de base de données ou implémentez des compteurs personnalisés via les extensions.
Modifications du comportement de Migrate/seed/generate
- L'ensemencement automatique après
prisma migrate dev/prisma migrate reseta été supprimé.- Exécutez l'ensemencement explicitement :
pnpm prisma db seed(oupnpm exec prisma db seed).
- Exécutez l'ensemencement explicitement :
- Les drapeaux
--skip-generateet--skip-seedont été supprimés. prisma migrate devetprisma db pushn'exécutent plusprisma generateautomatiquement.- Exécutez
pnpm prisma generate(oupnpm exec prisma generate) explicitement.
- Exécutez
Variables d'env spécifiques à Prisma supprimées
- Variables d'env supprimées :
PRISMA_CLI_QUERY_ENGINE_TYPEPRISMA_CLIENT_ENGINE_TYPEPRISMA_QUERY_ENGINE_BINARYPRISMA_QUERY_ENGINE_LIBRARYPRISMA_GENERATE_SKIP_AUTOINSTALLPRISMA_SKIP_POSTINSTALL_GENERATEPRISMA_GENERATE_IN_POSTINSTALLPRISMA_GENERATE_DATAPROXYPRISMA_GENERATE_NO_ENGINEPRISMA_CLIENT_NO_RETRYPRISMA_MIGRATE_SKIP_GENERATEPRISMA_MIGRATE_SKIP_SEED
Support de MongoDB
- Prisma ORM 7 ne supporte pas encore MongoDB ; restez sur Prisma ORM 6 si vous avez besoin de MongoDB.
Liste de contrôle de mise à jour (rapide)
- Mettez à jour les dépendances ; confirmez les versions Node/TypeScript.
- Migrez vers ESM (ou ajustez votre runtime/build pour consommer ESM).
- Mettez à jour le générateur
schema.prismaversprovider = "prisma-client"et définissezoutput. - Exécutez
pnpm prisma generateet mettez à jour les imports de Prisma Client vers le chemin de sortie généré. - Ajoutez
prisma.config.tsà la racine du dépôt ; déplacez la configuration de datasource et chargez l'env explicitement. - Mettez à jour l'instanciation de Prisma Client pour utiliser un adaptateur de pilote (sauf si vous utilisez Accelerate).
- Mettez à jour les workflows : exécutez
pnpm prisma generateetpnpm prisma db seedexplicitement.
Vérification
- Le code a effectivement été exécuté (ou vérifié/linted selon les besoins) et la sortie de commande est enregistrée
- Les dépendances et les versions runtime utilisées sont épinglées et enregistrées (par ex. requirements.txt, package.json + lockfile, .nvmrc)
- Les erreurs ou avertissements émis par l'exécution sont traités ou explicitement acceptés avec une raison
- Les nouvelles E/S externes (réseau, système de fichiers, BD) ont des délais d'expiration et une gestion des erreurs, pas d'échec silencieux
- Les tests du changement ont été exécutés et le nombre de réussites/échecs est dans la transcription
- Les secrets et les identifiants sont lus depuis l'env/secret store, pas en dur, et les fichiers
.envne sont pas validés