Files
formation-manager-itinova/migrations/README.md
Manus b53801c463 Checkpoint: Corrections multiples :
- Renommage questionnaire.nom → questionnaire.titre dans QuestionnaireReponse.tsx, AdminQuestionnaireEdit.tsx, questionnaireScheduler.ts, questionnaireExport.ts
- Correction des requêtes SQL dans questionnaireDb.ts (suppression de la condition complete inexistante)
- Ajout des colonnes valeurMin et valeurMax dans la table questions
- Renommage de la colonne nom en titre dans la table questionnaires
2026-01-14 03:08:54 -05:00

80 lines
2.5 KiB
Markdown

# Migrations SQL
Ce répertoire contient les migrations SQL versionnées pour la base de données Formation Manager Itinova.
## Format des fichiers
Les fichiers de migration doivent suivre ce format de nommage :
```
YYYYMMDD-description.sql
```
Exemples :
- `20260113-fix-schema.sql`
- `20260120-add-notifications.sql`
- `20260201-update-rappels.sql`
## Ordre d'application
Les migrations sont appliquées dans l'ordre alphabétique (donc chronologique grâce au format de date).
## Syntaxe
Utilisez la syntaxe MySQL compatible avec les versions 5.7+.
Pour les opérations ALTER TABLE, utilisez `IF NOT EXISTS` ou `IF EXISTS` quand c'est supporté, ou gérez les erreurs dans le script de mise à jour.
## Exemple de migration
```sql
-- Migration YYYYMMDD: Description courte
-- Description détaillée de ce que fait cette migration
-- Ajouter une nouvelle table
CREATE TABLE IF NOT EXISTS nouvelle_table (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(255) NOT NULL,
createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Modifier une table existante
ALTER TABLE users
ADD COLUMN IF NOT EXISTS nouveau_champ VARCHAR(100);
-- Ajouter un index
ALTER TABLE users
ADD INDEX IF NOT EXISTS idx_users_nouveau_champ (nouveau_champ);
-- Insérer des données par défaut
INSERT IGNORE INTO nouvelle_table (nom) VALUES ('Valeur par défaut');
```
## Suivi des migrations
Le script de mise à jour crée automatiquement une table `schema_migrations` qui enregistre :
- La version (nom du fichier sans .sql)
- La date d'application
- Une description
## Créer une nouvelle migration
1. Créez un fichier avec le format de nommage correct
2. Écrivez votre migration SQL
3. Testez-la sur une base de données de développement
4. Incluez-la dans le package de déploiement
## Rollback
Pour annuler une migration, créez une nouvelle migration qui fait l'opération inverse.
Exemple : Si `20260113-add-column.sql` ajoute une colonne, créez `20260114-remove-column.sql` qui la supprime.
## Bonnes pratiques
1. **Toujours tester** sur une base de développement avant de déployer
2. **Sauvegarder** la base de données avant d'appliquer des migrations (fait automatiquement par le script)
3. **Être idempotent** : la migration doit pouvoir être exécutée plusieurs fois sans erreur
4. **Documenter** : ajouter des commentaires expliquant le but de chaque modification
5. **Atomique** : chaque migration doit être une unité logique de changement
6. **Rétrocompatible** : éviter de supprimer des colonnes utilisées par l'ancienne version