- 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
2.5 KiB
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.sql20260120-add-notifications.sql20260201-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
-- 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
- Créez un fichier avec le format de nommage correct
- Écrivez votre migration SQL
- Testez-la sur une base de données de développement
- 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
- Toujours tester sur une base de développement avant de déployer
- Sauvegarder la base de données avant d'appliquer des migrations (fait automatiquement par le script)
- Être idempotent : la migration doit pouvoir être exécutée plusieurs fois sans erreur
- Documenter : ajouter des commentaires expliquant le but de chaque modification
- Atomique : chaque migration doit être une unité logique de changement
- Rétrocompatible : éviter de supprimer des colonnes utilisées par l'ancienne version