Максимальная глубина выражения SQLite - PullRequest
2 голосов
/ 05 марта 2012

Окружающая среда: какао на Mac OS x Snow Leopard

Я достиг максимальной (по умолчанию) глубины для запроса sqlite:

Expression tree is too large (maximum depth 1000)

sqlite документация скажем установить SQLITE_MAX_EXPR_DEPTH при компиляции, но КАК?я использую стандартную среду sqlite3, импортированную с:

#import <sqlite3.h>

примечание: я думаю, что максимальная глубина выражения может быть уменьшена (НЕ увеличена) во время выполнения с помощью:

sqlite3_limit(db,SQLITE_LIMIT_EXPR_DEPTH,size)

этоправо

Ответы [ 2 ]

3 голосов
/ 11 июня 2013

Более простое решение (хотя далеко не идеальное).

У меня была та же ошибка, и я должен был использовать реализацию SQLite по умолчанию в Android (запрос к базе аудиоданных системы).

Проблема возникла, когда я удалил некоторые «бесполезные» скобки, поэтому я положил их обратно, больше никаких ошибок

Сбои:

id = 387 OR id = 388 OR id = 390 OR id = 391 [...] OR id = 392

Не вылетает:

(id = 387 OR id = 388 [...] OR id = 390) OR (id = 391 [...] OR id = 392) OR (...

Мне повезло, потому что мои скобки в любом случае не имели смысла и их можно было легко разместить. Не очень чисто, но это помогло значительно уменьшить сбои, поэтому я доволен этим в этом случае.

2 голосов
/ 05 марта 2012

Вы правы в отношении всех ваших утверждений (это параметр времени компиляции, его можно уменьшить, но не повысить во время выполнения).Вы можете ограничить запрос или связать пользовательскую сборку SQLite с рабочим приложением.

Хорошая вещь о SQLite заключается в том, что его довольно просто построить.Читайте о пользовательских сборках .Кроме того, проект Apple SQLite XCode для OS X 10.6.8 имеет значение здесь .Используете ли вы проект Apple или делаете свой собственный, легко создать общую библиотеку для статической ссылки на ваш исполняемый файл, чтобы поставлять вместе с вашим проектом.Вам придется беспокоиться о совместимости при выпуске кода, но это цена, которую вы платите за сложные запросы.

Вы также можете задать вопрос об упрощении сложного запроса в другом вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...