Wenn Sie eine komplizierte Anfrage ausführen, die viele Tabellen benutzt, aber nichts zurückgibt, können Sie mit folgendem Verfahren herausfinden, was schief gegangen ist:
Testen Sie die Anfrage mit EXPLAIN
, um
offensichtliche Fehler zu finden. Siehe
Abschnitt 7.2.1, „EXPLAIN
-Syntax (Informationen über ein
SELECT
erhalten)“.
Wählen Sie nur diejenigen Spalten aus, die in der
WHERE
-Klausel aufgeführt sind.
Entfernen Sie immer nur eine einzige Tabelle aus der Anfrage
so lange, bis sie irgendwelche Zeilen zurückgibt. Wenn die
Tabellen groß sind, sollten Sie in Ihrer Anfrage
LIMIT 10
verwenden.
Geben Sie eine SELECT
-Anweisung für die
Spalte der zuletzt aus der Anfrage entfernten Tabelle, die
eigentlich eine passende Zeile hätte enthalten müssen.
Wenn Sie FLOAT
- oder
DOUBLE
-Spalten mit Dezimalzahlen
vergleichen, können Sie keine Gleichheitsvergleiche
(=
) durchführen. Dieses Problem tritt in
allen Programmiersprachen auf, da nicht alle
Fließkommawerte mit einer exakten Genauigkeit gespeichert
werden können. In manchen Fällen können Sie dies beheben,
indem Sie aus einem FLOAT
- einen
DOUBLE
-Wert machen. Siehe
Abschnitt A.5.8, „Probleme mit Fließkommavergleichen“.
Wenn Sie den Fehler immer noch nicht finden können, legen
Sie einen minimalen Testfall an, der mit mysql test
< query.sql
ausgeführt werden kann und Ihre
Probleme verdeutlicht. Eine Testdatei legen Sie an, indem
Sie die Tabellen mit mysqldump --quick db_name
tbl_name_1
...
tbl_name_n
>
query.sql kopieren. Öffnen Sie die Datei in einem
Editor, entfernen Sie einige eingefügte Zeilen (wenn mehr
da sind, als zur Verdeutlichung des Problems notwendig ist)
und fügen Sie am Ende der Datei Ihre
SELECT
-Anweisung an.
Mit folgenden Befehlen können Sie sich vergewissern, dass Ihre Testdatei das Problem zeigt:
shell>mysqladmin create test2
shell>mysql test2 < query.sql
Hängen Sie die Testdatei an einen Bugreport an. Diesen können Sie uns senden, wie in Abschnitt 1.8, „Wie man Bugs oder Probleme meldet“, beschrieben.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.