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:

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.

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.