Spec-Zone .ru
спецификации, руководства, описания, API
|
Если у Вас есть сложный запрос, который использует много таблиц, но это не возвращает строк, следует использовать следующую процедуру, чтобы узнать что не так:
Протестируйте запрос с EXPLAIN
проверять, можно ли найти что-то, что является, очевидно, неправильным. См. Раздел
13.8.2,"EXPLAIN
Синтаксис".
Выберите только те столбцы, которые используются в WHERE
пункт.
Удалите одну таблицу за один раз из запроса, пока это не возвращает некоторые
строки. Если таблицы являются большими, это - хорошая идея использовать LIMIT
10
с запросом.
Проблема a SELECT
для столбца, который должен был соответствовать строку против таблицы, которая была последняя удаленный
из запроса.
Если Вы сравниваетесь FLOAT
или DOUBLE
столбцы с числами, у которых есть десятичные числа, невозможно
использовать равенство (=
) сравнения. Эта проблема распространена в
большинстве машинных языков, потому что не все значения с плавающей точкой могут быть сохранены точной
точностью. В некоторых случаях, изменение FLOAT
к a DOUBLE
исправления это. См. Раздел
C.5.5.8, "Проблемы со Значениями С плавающей точкой".
Если все еще невозможно выяснить что не так, создать минимальный тест, который
может быть выполнен с mysql test < query.sql
это показывает Ваши
проблемы. Можно создать тестовый файл, выводя таблицы с mysqldump - быстрый db_name tbl_name_1
... tbl_name_n
> query.sql. Откройте
файл в редакторе, удалите, некоторые вставляют строки (если там более чем необходимы, чтобы
демонстрировать проблему), и добавьте Ваш SELECT
оператор в конце файла.
Проверьте, что тестовый файл демонстрирует проблему, выполняя эти команды:
shell>mysqladmin create test2
shell>mysql test2 < query.sql
Присоедините тестовый файл к отчету об ошибках, который можно зарегистрировать использование инструкций в Разделе 1.7, "Как Сообщить об Ошибках или проблемах".