Sqlite3 и PDO выдают с помощью ORDER BY
Я пытаюсь использовать оператор SQL
SELECT * FROM table ORDER BY column
через PDO-объект в PHP. Проблема в том, что я всегда получаю сообщение об ошибке (вызов функции-члена fetchall() для необъекта - это означает, что запрос не возвращал объект PDO) при использовании имен всех столбцов EXCEPT для ID. Когда я запрашиваю
SELECT * FROM table ORDER BY ID
оно работает. ID - это ПЕРВИЧНЫЙ КЛЮЧ INTEGER, все остальные столбцы - TEXT или NUMERIC, ни один из них не будет работать с предложением ORDER BY.
Есть идеи?
2 ответа
Это может быть проблема с временными файлами, как вы предложили в своем комментарии к ответу Фрэнка Хейкенса.
http://www.sqlite.org/tempfiles.html говорит:
2.6 Переходные показатели
SQLite может использовать временные индексы для реализации таких функций языка SQL, как:
* Предложение ORDER BY или GROUP BY
* Ключевое слово DISTINCT в совокупном запросе
* Составные операторы SELECT, к которым присоединяются UNION, EXCEPT или INTERSECT
Каждый переходный индекс хранится в своем собственном временном файле.
Если и где файлы создаются, контролируется SQLITE_TEMP_STORE
, PRAGMA temp_store
а также PRAGMA temp_store_directory
см. http://www.sqlite.org/pragma.html
Замените свой ORDER BY
заявление сORDER BY CAST(COLUMN AS REAL)
, Может сортировать REAL
ценности.