Ошибка SQLite: слишком много терминов в составном SELECT - PullRequest
12 голосов
/ 02 марта 2012

Когда я вставляю слишком много данных в файл базы данных sqlite, возникает ошибка «слишком много терминов в составном SELECT». Я использую "insert into ... select ... union select ... union ...". Я знаю, что это слишком много операторов выбора, но мой вопрос: какое максимальное количество терминов в составном операторе SELECT?

Ответы [ 2 ]

25 голосов
/ 02 марта 2012

Составной оператор SELECT - это два или более операторов SELECT, соединенных операторами UNION, UNION ALL, EXCEPT или INTERSECT. Мы называем каждое отдельное утверждение SELECT в составном SELECT «термином».

Генератор кода в SQLite обрабатывает составные операторы SELECT с использованием рекурсивного алгоритма. Поэтому, чтобы ограничить размер стека, мы ограничиваем количество слагаемых в составном SELECT. Максимальное количество терминов - SQLITE_MAX_COMPOUND_SELECT, значение по умолчанию - 500. Мы считаем, что это щедрое выделение, поскольку на практике мы почти никогда не видим, чтобы количество терминов в составном выборе превышало однозначные числа.

Максимальное количество составных терминов SELECT может быть уменьшено во время выполнения с помощью интерфейса sqlite3_limit (db, SQLITE_LIMIT_COMPOUND_SELECT, size).

для более подробной информации, пожалуйста, проверьте это ... http://www.sqlite.org/limits.html

0 голосов
/ 02 марта 2012

Количество используемых вами SELECT не ограничено. Все, что вам нужно сделать, это проверить, соответствуют ли списки столбцов столбцам INSERT.

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