Datenbank bereinigen
From MapbenderWiki
Contents |
English
lost wms
When a wms is removed from all GUIs, it has lost all links from table gui_wms. It is invisible in the admin-GUIs for delete (WMS_löschen).
But the wms is still stored in table wms and related tables layer and wms_format.
You can find this cases with SQL-View:
SELECT wms_id, wms_version, wms_title, wms_upload_url
FROM wms
WHERE NOT EXISTS
(SELECT * FROM gui_wms
WHERE gui_wms.fkey_wms_id = wms.wms_id)
ORDER BY wms.wms_id;
.. and delete them with:
DELETE FROM wms
WHERE NOT EXISTS
(SELECT * FROM gui_wms
WHERE gui_wms.fkey_wms_id = wms.wms_id);
multi wms
If a wms (url) is uploaded more than once, it has multible IDs in the table wms. It's better to upload only one time and than copy to other GUIs.
Find this cases with SQL:
SELECT wms_upload_url, wms.wms_version, wms.wms_id,
gui.gui_name, wms.wms_title
FROM wms
LEFT JOIN gui_wms
ON gui_wms.fkey_wms_id = wms.wms_id
LEFT JOIN gui
ON gui.gui_id = gui_wms.fkey_gui_id
WHERE wms.wms_upload_url IN
(SELECT wms_upload_url FROM wms
GROUP BY wms_upload_url HAVING Count(wms_id) > 1)
ORDER BY wms_upload_url, wms.wms_version, wms.wms_id, gui.gui_name;
May be its usefull to upload a wms with different versions.
Deutsch
Verlorene WMS
Wenn ein WMS aus allen GUIs entfernt wurde, ist er über die Admin-Oberfläche (z.B. WMS_löschen) nicht mehr sichtbar. Trotzdem sind noch Daten in der Tabelle wms und in den abhängigen Tabellen layer und wms_format dazu gespeichert.
Es gibt jedoch keinen Eintrag mehr im der Verbindungstabelle gui_wms, der auf diesen wms verknüpft.
Diese Fälle können in der Datenbank gefunden werden mit dem SQL-View:
SELECT wms_id, wms_version, wms_title, wms_upload_url
FROM wms
WHERE NOT EXISTS
(SELECT * FROM gui_wms
WHERE gui_wms.fkey_wms_id = wms.wms_id)
ORDER BY wms.wms_id;
Sie können gelöscht werden mit:
DELETE FROM wms
WHERE NOT EXISTS
(SELECT * FROM gui_wms
WHERE gui_wms.fkey_wms_id = wms.wms_id);
Mehrfache WMS
Werden WMS mehrfach hochgeladen (get capabilities), dann werden für die gleiche URL mehrere IDs vergeben. Das erschwert die Administration z.B. beim Aktualisieren. Besser ist es, einen WMS nur einmal hochzuladen und dann von GUI zu GUI zu kopieren.
Solche Fälle findet man mit dem SQL:
SELECT wms_upload_url, wms.wms_version, wms.wms_id,
gui.gui_name, wms.wms_title
FROM wms
LEFT JOIN gui_wms
ON gui_wms.fkey_wms_id = wms.wms_id
LEFT JOIN gui
ON gui.gui_id = gui_wms.fkey_gui_id
WHERE wms.wms_upload_url IN
(SELECT wms_upload_url FROM wms
GROUP BY wms_upload_url HAVING Count(wms_id) > 1)
ORDER BY wms_upload_url, wms.wms_version, wms.wms_id, gui.gui_name;
Dies muss manuell über die Admin-GUI bereinigt werden. Redundante Einträge aus GUIs entfernen (Remove) und statt dessen Kopien aus anderen GUIs eintragen.
Es kann jedoch sinnvoll sein, wenn eine WMS-URL mit verschiedenen Versionen gespeichert ist.

