Gestion de la base de données
Guide pour gérer les migrations Prisma en développement.
Afficher le schéma Prisma
cat prisma/schema.prismaAffiche le schéma complet avec tous les models et relations.
Créer une migration
Modifiction du schéma
Éditez prisma/schema.prisma :
model NewModel {
id String @id @default(cuid())
name String
createdAt DateTime @default(now())
}Créer la migration
# Créer une migration
pnpm prisma migrate dev --name add_new_model
# Cela :
# 1. Crée un fichier migration
# 2. Applique la migration Ă la BD
# 3. Génère le client PrismaMigration avec réinitialisation
Si vous changez complètement le schéma :
# ⚠️ DANGER - EFFACE LA BASE!
pnpm prisma migrate reset
# Cela :
# 1. Efface la BD
# 2. Applique toutes les migrations
# 3. Lance le seed.ts (si existe)Ne l’utilisez que en développement!
Appliquer les migrations existantes
# Appliquer les migrations au schéma existant
pnpm prisma migrate deploy
# Ne crée pas de migration, applique justeVoir l’état des migrations
# Voir l'état
pnpm prisma migrate status
# Affiche :
# - Migrations appliquées
# - Migrations en attente
# - Dernière migration communePrisma Studio
Voir et modifier les données :
# Ouvrir Prisma Studio
pnpm prisma studio
# Ouvre http://localhost:5555Vous pouvez :
- Voir tous les enregistrements
- Créer/modifier/supprimer
- Filtrer et trier
Générer le client Prisma
# Générer après changements du schéma
pnpm prisma generate
# Fait automatiquement par `prisma migrate dev`
# Mais utile après un pull GitSeeding (Données initiales)
Créer le script de seed
prisma/seed.ts :
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
// Créer un utilisateur de test
const user = await prisma.user.upsert({
where: { email: 'test@test.com' },
update: {},
create: {
email: 'test@test.com',
name: 'Test User',
password: 'hashed-password',
},
})
console.log('Créé :', user)
}
main()
.catch((e) => {
console.error(e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})Ajouter le seed Ă package.json
{
"prisma": {
"seed": "tsx prisma/seed.ts"
}
}Lancer le seed
pnpm prisma db seed
# Exécute le script seed.tsVérifier les relations
Afficher les relations
pnpm prisma studio
# Cliquez sur un modèle
# Les relations apparaissent dans le panel droitIntégrité référentielle
Vérifier les contraintes
model Post {
id String @id @default(cuid())
title String
author User @relation(fields: [authorId], references: [id])
authorId String @db.Text
}@relation: crée la relationfields: [authorId]: champ de clé étrangèrereferences: [id]: champ référencé
Migrations personnalisées
Si Prisma ne peut pas générer automatiquement :
# Créer une migration vide
pnpm prisma migrate dev --name custom_migration
# Éditez le fichier SQL généré
# Ajoutez votre SQL personnalisé
# Appliquez
pnpm prisma migrate deployFichier généré : prisma/migrations/20240101123456_custom_migration/migration.sql
-- Votre SQL personnalisé
ALTER TABLE User ADD COLUMN customField VARCHAR(255);Vérifier les performances
Voir les indexes
pnpm prisma db push --skip-generate
# Affiche le schéma avec les indexesReset complet
Réinitialiser la BD
⚠️ Efface tout!
# Reset complet
pnpm prisma migrate reset
# Efface la BD
# Applique toutes les migrations
# Lance le seed.ts
# Relancer le serveur après
pnpm devNe l’utilisez qu’en dev!
Gestion des migrations en équipe
Tirer du Git
# Quelqu'un a ajouté une migration
git pull
# Appliquer la migration
pnpm prisma migrate deploy
# Générer le client
pnpm prisma generate
# Relancer le serveur
pnpm devConflit de migration
Si 2 devs créent des migrations simultanément :
# Vous avez un conflit
git status
# Renommez votre migration
mv prisma/migrations/20240101_your_migration \
prisma/migrations/20240101_timestamp_your_migration
# Puis push
git pushInspection de la BD
Connecter directement Ă PostgreSQL
# Se connecter Ă la BD
psql postgresql://user:pass@localhost:5432/wagoo_dev
# Voir les tables
\dt
# Voir le schéma d'une table
\d users
# RequĂŞte SQL
SELECT * FROM users LIMIT 10;
# Quitter
\qBackups en développement
Exporter la BD
# Créer un backup
pg_dump postgresql://user:pass@localhost:5432/wagoo_dev > backup.sql
# Restaurer un backup
psql postgresql://user:pass@localhost:5432/wagoo_dev < backup.sqlDépannage
”Prisma schema not found”
Error: Prisma schema not found at /path/to/prisma/schema.prismaSolutions :
- Vérifiez que vous êtes à la racine du projet
- Vérifiez que prisma/ existe
”Migration failed”
The migration failed on the database server with: Error: column "field" already existsSolutions :
- Vérifiez que le schéma correspond à la BD
- Utilisez
pnpm prisma db push --skip-generatepour synchroniser - Ou
pnpm prisma migrate reset(en dev seulement)
“Cannot generate Prisma Client”
pnpm prisma generateProchaines étapes
→ Tests → Code Standards
Last updated on