mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-04 17:04:53 +02:00
62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
![]() |
# Script de nettoyage des doublons de villes
|
||
|
|
||
|
Ce dossier contient un script SQL pour résoudre le problème de contrainte d'unicité sur le code INSEE des villes dans la table `stats`.
|
||
|
|
||
|
## Problème
|
||
|
|
||
|
Lorsque vous rencontrez l'erreur suivante :
|
||
|
|
||
|
```
|
||
|
SQLSTATE[23505]: Unique violation: 7 ERREUR: n'a pas pu créer l'index unique « uniq_stats_zone »
|
||
|
DETAIL: La clé (zone)=(91111) est dupliquée.
|
||
|
```
|
||
|
|
||
|
Cela signifie qu'il existe des doublons dans la table `stats` avec le même code INSEE (colonne `zone`), ce qui empêche la création de la contrainte d'unicité.
|
||
|
|
||
|
## Solution
|
||
|
|
||
|
Le script `clean_duplicate_stats.sql` permet de :
|
||
|
|
||
|
1. Désactiver temporairement la contrainte d'unicité
|
||
|
2. Identifier et supprimer les doublons de villes, en gardant l'entrée la plus ancienne
|
||
|
3. Réactiver la contrainte d'unicité
|
||
|
|
||
|
## Comment utiliser le script
|
||
|
|
||
|
### Précautions importantes
|
||
|
|
||
|
⚠️ **ATTENTION** : Ce script supprime des données de la base. Assurez-vous de faire une sauvegarde complète de votre base de données avant de l'exécuter.
|
||
|
|
||
|
Les entités liées aux enregistrements `Stats` supprimés (comme `CityFollowUp` et `Place`) seront également supprimées si des contraintes de clé étrangère avec `ON DELETE CASCADE` sont définies dans la base de données.
|
||
|
|
||
|
### Exécution du script
|
||
|
|
||
|
Pour exécuter le script sur une base PostgreSQL :
|
||
|
|
||
|
```bash
|
||
|
psql -U username -d database_name -f clean_duplicate_stats.sql
|
||
|
```
|
||
|
|
||
|
Remplacez `username` par votre nom d'utilisateur PostgreSQL et `database_name` par le nom de votre base de données.
|
||
|
|
||
|
### Vérification
|
||
|
|
||
|
Le script inclut des requêtes pour :
|
||
|
- Afficher le nombre de doublons qui seront supprimés
|
||
|
- Afficher les détails des doublons avant suppression
|
||
|
- Vérifier qu'il n'y a plus de doublons après l'opération
|
||
|
|
||
|
## Fonctionnement technique
|
||
|
|
||
|
Le script :
|
||
|
|
||
|
1. Désactive la contrainte d'unicité `uniq_stats_zone`
|
||
|
2. Crée une table temporaire pour identifier les doublons
|
||
|
3. Utilise `ROW_NUMBER()` pour conserver l'entrée la plus ancienne de chaque groupe de doublons
|
||
|
4. Supprime les doublons identifiés
|
||
|
5. Réactive la contrainte d'unicité
|
||
|
6. Vérifie qu'il n'y a plus de doublons
|
||
|
|
||
|
## Après l'exécution
|
||
|
|
||
|
Une fois le script exécuté avec succès, vous ne devriez plus rencontrer l'erreur de violation de contrainte d'unicité lors de l'exécution des commandes Symfony.
|