Inkonsistente mySQL-Datenbank

Vor einiger Zeit wollte ich eine inkonsistente mySQL-Datenbank bereinigen. Diese wurde durch Unwissenheit mit den folgenden Befehlen von jedem Statement in den entsprechenden Zustand gebracht:

SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;

Die fehlerhaften Datensätze waren mit einem Script auch schnell ausgemacht (GROUP BY Primary-Key-Felder HAVING COUNT(*) > 0). Doch dann musste ich verwundert feststellen, dass ich diese doppelten Schlüssel mit einem einzelnen Statement nicht zu sehen bekam:

SQLQuery1

Nach einer kurzen Denkpause, und einer Query-Analyse mit dem Keyword EXPLAIN, wurde schnell klar, dass der Index des Primärschlüssels selbstverständlich nur einen der beiden Datensätze kannte. Um den Index zu umgehen / nicht zu nutzen, musste ich die Abfrage also anpassen:

SQLQuery2

Nun sieht man beide Datensätze und einer Bereinigung steht nichts mehr im Wege.


Beitrag veröffentlicht

in

, ,

von

Schlagwörter: