B.3.4.7 Решение проблем с отсутствием совпадающих строк
Если у вас есть сложное запросы, использующий много таблиц, но возвращающий нулевое количество строк, используйте следующую процедуру, чтобы выяснить, в чём проблема:
Протестируйте запрос с помощью
EXPLAIN, чтобы проверить, можете ли вы найти очевидные ошибки. См. Раздел 13.8.2, «Запрос EXPLAIN».Выберите только те столбцы, которые используются в условии
WHERE.Поочерёдно удаляйте таблицы из запроса до тех пор, пока он не вернёт какие-либо строки. Если таблицы большие, рекомендуется использовать
LIMIT 10с запросом.Выполните
SELECTдля столбца, который должен был сопоставиться со строкой в таблице, которая была последней удалена из запроса.Если вы сравниваете
FLOATилиDOUBLEстолбцы с числами, имеющими десятичные дроби, вы не можете использовать сравнения с равенством (=). Эта проблема характерна для большинства компьютерных языков, так как не все значения с плавающей точкой могут быть сохранены с точной точностью. В некоторых случаях, изменениеFLOATнаDOUBLEрешает эту проблему. См. Раздел B.3.4.8, «Проблемы с значениями с плавающей точкой».-
Если вы по-прежнему не можете понять, в чём проблема, создайте минимальный тест, который можно запустить с помощью
mysql test < query.sql, демонстрирующий ваши проблемы. Вы можете создать тестовый файл, экспортировав таблицы с помощью mysqldump --quick db_nametbl_name_1...tbl_name_n> query.sql. Откройте файл в редакторе, удалите некоторые строки вставки (если их больше, чем необходимо для демонстрации проблемы) и добавьте ваше утверждениеSELECTв конец файла.Убедитесь, что тестовый файл демонстрирует проблему, выполнив эти команды:
$>
mysqladmin create test2$>mysql test2 < query.sqlПриложите тестовый файл к отчёту об ошибке, который вы можете подать, следуя инструкциям в Разделе 1.5, «Как сообщать об ошибках или проблемах».
© 2025 Oracle
Licensed under the GPLv2 License.