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
This commit is contained in:
79
migrations/README.md
Normal file
79
migrations/README.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user