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 ценности.

Другие вопросы по тегам