Files
admin-netmonster-db/sql/migration_fix_uniq_cell.sql
2026-10-21 21:54:23 +02:00

32 lines
1.6 KiB
SQL

-- migration_fix_uniq_cell.sql
-- Corrige la contrainte unique de la table `cells` pour inclure l'eNB/RNC
-- (sub_id2), evitant les faux positifs de duplication quand deux eNB
-- differents partagent par coincidence le meme Cell ID + area_code.
--
-- Erreur corrigee :
-- SQLSTATE[23000]: Integrity constraint violation: 1062
-- Duplicate entry 'xxx' for key 'uniq_cell'
--
-- A executer sur la base de production avant de redeployer edit_site.php
-- si celui-ci permet desormais d'ajouter des cellules a un eNB different
-- partageant un Cell ID deja utilise ailleurs.
-- 1) Verification prealable : recherche de vrais doublons (meme eNB, meme
-- Cell ID, meme area_code) qui bloqueraient la creation du nouvel index.
-- Si cette requete renvoie des lignes, il faut les corriger/supprimer
-- manuellement AVANT d'executer l'ALTER TABLE ci-dessous.
SELECT tech, mcc, mnc, sub_id2, cell_id, area_code, COUNT(*) AS doublons
FROM cells
GROUP BY tech, mcc, mnc, sub_id2, cell_id, area_code
HAVING COUNT(*) > 1;
-- 2) Si la requete ci-dessus ne renvoie aucune ligne, appliquer la migration :
ALTER TABLE cells DROP INDEX uniq_cell;
ALTER TABLE cells ADD UNIQUE KEY uniq_cell (tech, mcc, mnc, sub_id2, cell_id, area_code);
-- 3) Meme correction sur staging_cells si une contrainte equivalente y existe,
-- pour eviter le meme blocage lors de l'import initial (avant validation).
-- Decommentez si applicable a votre schema :
-- ALTER TABLE staging_cells DROP INDEX uniq_cell;
-- ALTER TABLE staging_cells ADD UNIQUE KEY uniq_cell (tech, mcc, mnc, sub_id2, cell_id, area_code);