Skip to main content

Istruzioni

Per prima cosa verificare la presenza di duplicati:

🛠 2. Metodo avanzato (via SQL)

Se vuoi trovare ed eliminare tutti i duplicati via SQL direttamente sul database, ecco come fare (usando ad esempio MySQL o MariaDB):

⚠️ Prima di iniziare:

  • Fai un backup del database: mysqldump dcim > backup_dcim.sql

  • Accedi al database: mysql -u root -p dcim

🔍 Trova i duplicati

Questa query ti mostra i dispositivi che condividono la stessa posizione nello stesso rack:

sql
SELECT Cabinet, Position, COUNT(*) as NumDevices FROM fac_Device WHERE Position > 0 GROUP BY Cabinet, Position HAVING NumDevices > 1;

🛠️ PASSO 2 – (Opzione sicura) Elimina i duplicati mantenendo un solo dispositivo per posizione

Puoi usare questa query per eliminare tutti i duplicati, mantenendo il dispositivo con l’ID più basso (cioè il primo inserito):

sql
DELETE FROM fac_Device WHERE DeviceID NOT IN ( SELECT * FROM ( SELECT MIN(DeviceID) FROM fac_Device WHERE Cabinet = 34 AND Position > 0 GROUP BY Position ) AS KeepDevices ) AND Cabinet = 34 AND Position > 0;

🔍 Cosa fa questa query:

  • Seleziona per ogni Position del rack 34 il DeviceID più piccolo.

  • Mantiene solo quelli.

  • Elimina tutti gli altri che sono nella stessa Position.

Oppure per lasciare solo il più recente:

Basta quindi sostituire MIN(DeviceID) con MAX(DeviceID).

sql
/* Elimina i duplicati nel cabinet 34 mantenendo SOLO il device più recente (DeviceID più alto) per ogni singola posizione U */ DELETE FROM fac_Device WHERE DeviceID NOT IN ( SELECT * FROM ( SELECT MAX(DeviceID) -- <‑‑ cambia MIN → MAX FROM fac_Device WHERE Cabinet = 34 AND Position > 0 GROUP BY Position -- un “KeepDevice” per ogni U ) AS KeepDevices ) AND Cabinet = 34 AND Position > 0;



🔁 PASSO 3 – Verifica che la pulizia sia andata a buon fine

Esegui di nuovo:

sql
SELECT Cabinet, Position, COUNT(*) as NumDevices FROM fac_Device WHERE Cabinet = 34 AND Position > 0 GROUP BY Cabinet, Position HAVING NumDevices > 1;

Dovresti ora vedere zero righe (nessun duplicato).