Spec-Zone .ru
спецификации, руководства, описания, API

C.5.5.7. Решение проблем без Соответствия Строк

Если у Вас есть сложный запрос, который использует много таблиц, но это не возвращает строк, следует использовать следующую процедуру, чтобы узнать что не так:

  1. Протестируйте запрос с EXPLAIN проверять, можно ли найти что-то, что является, очевидно, неправильным. См. Раздел 13.8.2,"EXPLAIN Синтаксис".

  2. Выберите только те столбцы, которые используются в WHERE пункт.

  3. Удалите одну таблицу за один раз из запроса, пока это не возвращает некоторые строки. Если таблицы являются большими, это - хорошая идея использовать LIMIT 10 с запросом.

  4. Проблема a SELECT для столбца, который должен был соответствовать строку против таблицы, которая была последняя удаленный из запроса.

  5. Если Вы сравниваетесь FLOAT или DOUBLE столбцы с числами, у которых есть десятичные числа, невозможно использовать равенство (=) сравнения. Эта проблема распространена в большинстве машинных языков, потому что не все значения с плавающей точкой могут быть сохранены точной точностью. В некоторых случаях, изменение FLOAT к a DOUBLE исправления это. См. Раздел C.5.5.8, "Проблемы со Значениями С плавающей точкой".

  6. Если все еще невозможно выяснить что не так, создать минимальный тест, который может быть выполнен с mysql test < query.sql это показывает Ваши проблемы. Можно создать тестовый файл, выводя таблицы с mysqldump - быстрый db_name tbl_name_1 ... tbl_name_n > query.sql. Откройте файл в редакторе, удалите, некоторые вставляют строки (если там более чем необходимы, чтобы демонстрировать проблему), и добавьте Ваш SELECT оператор в конце файла.

    Проверьте, что тестовый файл демонстрирует проблему, выполняя эти команды:

    shell> mysqladmin create
                        test2shell> mysql test2 <
                        query.sql

    Присоедините тестовый файл к отчету об ошибках, который можно зарегистрировать использование инструкций в Разделе 1.7, "Как Сообщить об Ошибках или проблемах".