OperationalError создает индекс в sqlite - PullRequest
6 голосов
/ 05 марта 2010

РЕДАКТИРОВАТЬ: TL; версия DR

Я набрал это

CREATE INDEX IF NOT EXISTS IDX_FILE_SIZE table_name (file_size); 

вместо этого

CREATE INDEX IF NOT EXISTS IDX_FILE_SIZE ON table_name (file_size); 

Не делай этого.

1 Ответ

5 голосов
/ 05 марта 2010

Несколько глупых вопросов:

Является ли доказательством того, что в оскорбительном утверждении отсутствует слово ON?

CREATE INDEX, ЕСЛИ НЕ СУЩЕСТВУЕТ IDX_FILE_FULLPATH_FILE_PARENT_DIR ON имя_таблицы (file_fullpath, file_parent_dir);
CREATE INDEX ЕСЛИ НЕ СУЩЕСТВУЕТ IDX_FILE_SIZE имя_таблицы (размер_файла); - отсутствует ВКЛ
CREATE INDEX, ЕСЛИ НЕ СУЩЕСТВУЕТ IDX_TAG_TITLE ON table_name (tag_title);

Где-то во всех словах в вашем вопросе я видел фразу "синтаксическая ошибка"?

Вы пробовали выполнить простой шаг - запустить операторы SQL в интерпретаторе команд sqlite3 и увидеть какую синтаксическую ошибку вы действительно получили?

1022 * Е.Г. *

SQLite version 3.6.14
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table foo (bar int, zot int);
sqlite> create index barx on foo(bar);
sqlite> create index zotx    foo(zot);
SQL error: near "foo": syntax error
sqlite>

Рассматривали ли вы возможность просмотра TFRRD (Фантастическая схема железной дороги) в документах ?

Вы писали: "" ", когда я запускаю эту команду в меньшем скрипте (verifyIndexSmaller), она не выдает ошибку. Если я тогда попытаюсь снова запустить больший скрипт, даже если индекс был создан меньшим скриптом, Я все еще получаю ошибку "" ".

Рассматривали ли вы возможность того, что вы не не выполнили эту команду в меньшем сценарии, но фактически выполнили другую (исправленную!) Версию этой команды?

Теперь вы понимаете, почему С. Лотт пытался заставить вас отрезать вафлю и сосредоточиться на фрагменте SQL, который вызывал ошибку?

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