-- ============================================================================= -- Script de réparation Flyway — UnionFlow (mode dev) -- ============================================================================= -- Exécuter UNE SEULE FOIS sur la base PostgreSQL "unionflow" AVANT de -- relancer le serveur. -- -- Contexte : -- Hibernate (mode "update") avait créé certaines tables avant que Flyway -- ne prenne le relais. Résultat : la table types_reference existe mais -- manque la colonne "valeur_systeme" qu'attend V3.0. -- flyway_schema_history s'arrête à la version 2.10. -- -- Solution : -- 1. Ajouter les colonnes manquantes (ajoutées par V3.x mais absentes -- car Hibernate avait créé les tables avant). -- 2. Marquer V3.0 → V3.6 comme "déjà appliquées" (success=true) dans -- flyway_schema_history, afin que Flyway ne les reexécute pas. -- 3. Flyway n'exécutera alors que V3.7 (seed des membres de test). -- ============================================================================= BEGIN; -- ───────────────────────────────────────────────────────────────────────────── -- 1. Ajouter les colonnes manquantes dues au mode Hibernate "update" -- ───────────────────────────────────────────────────────────────────────────── -- V3.0 a besoin de cette colonne dans types_reference ALTER TABLE types_reference ADD COLUMN IF NOT EXISTS valeur_systeme BOOLEAN NOT NULL DEFAULT FALSE; -- V3.5 peut avoir ajouté des colonnes d'adresse dans organisations -- (ajout sécurisé — sans erreur si déjà présentes) ALTER TABLE organisations ADD COLUMN IF NOT EXISTS adresse VARCHAR(255); ALTER TABLE organisations ADD COLUMN IF NOT EXISTS ville VARCHAR(100); ALTER TABLE organisations ADD COLUMN IF NOT EXISTS code_postal VARCHAR(20); ALTER TABLE organisations ADD COLUMN IF NOT EXISTS pays VARCHAR(100); ALTER TABLE organisations ADD COLUMN IF NOT EXISTS region VARCHAR(100); -- ───────────────────────────────────────────────────────────────────────────── -- 2. Marquer V3.0 à V3.6 comme appliquées dans flyway_schema_history -- ───────────────────────────────────────────────────────────────────────────── DO $$ DECLARE max_rank INT; BEGIN SELECT COALESCE(MAX(installed_rank), 0) INTO max_rank FROM flyway_schema_history; INSERT INTO flyway_schema_history (installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) VALUES (max_rank + 1, '3.0', 'Optimisation Structure Donnees', 'SQL', 'V3.0__Optimisation_Structure_Donnees.sql', 0, current_user, NOW(), 0, true), (max_rank + 2, '3.1', 'Add Module Disponible FK', 'SQL', 'V3.1__Add_Module_Disponible_FK.sql', 0, current_user, NOW(), 0, true), (max_rank + 3, '3.2', 'Seed Types Reference', 'SQL', 'V3.2__Seed_Types_Reference.sql', 0, current_user, NOW(), 0, true), (max_rank + 4, '3.3', 'Optimisation Index Performance', 'SQL', 'V3.3__Optimisation_Index_Performance.sql', 0, current_user, NOW(), 0, true), (max_rank + 5, '3.4', 'LCB FT Anti Blanchiment', 'SQL', 'V3.4__LCB_FT_Anti_Blanchiment.sql', 0, current_user, NOW(), 0, true), (max_rank + 6, '3.5', 'Add Organisation Address Fields', 'SQL', 'V3.5__Add_Organisation_Address_Fields.sql', 0, current_user, NOW(), 0, true), (max_rank + 7, '3.6', 'Create Test Organisations', 'SQL', 'V3.6__Create_Test_Organisations.sql', 0, current_user, NOW(), 0, true) ON CONFLICT (version) DO NOTHING; END $$; COMMIT; -- ───────────────────────────────────────────────────────────────────────────── -- 3. Vérification finale -- ───────────────────────────────────────────────────────────────────────────── SELECT version, description, success, installed_on FROM flyway_schema_history ORDER BY installed_rank; -- Vous devriez voir : ..., 2.10, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6 -- V3.7 sera appliquée par Flyway au prochain démarrage du serveur.