在SQL中创建索引的OperationalError

时间:2010-03-05 05:37:19

标签: python sql sqlite indexing

编辑: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 个答案:

答案 0 :(得分:5)

一些愚蠢的问题:

令人遗憾的是,违规声明缺少单词ON

CREATE INDEX IF NOT NOT EXISTS IDX_FILE_FULLPATH_FILE_PARENT_DIR ON table_name(file_fullpath,file_parent_dir);
CREATE INDEX IF NOT NOT EXISTS IDX_FILE_SIZE table_name(file_size); - 缺少开启
CREATE INDEX IF NOT NOT EXISTS IDX_TAG_TITLE ON table_name(tag_title);

在你问题的所有措辞的某处,我是否看到了“语法错误”一词?

您是否尝试过在sqlite3命令解释器中运行SQL语句的简单步骤,并看到您实际获得的语法错误?

E.g。

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 (The Fantastic Rail-Road Diagram) in the docs

您写道:“”当我在较小的脚本(verifyIndexSmaller)中运行该命令时,它没有出错。如果我再次尝试运行更大的脚本,即使索引是由较小的脚本创建的,我仍然得到错误“”“。

您是否考虑过没有在较小的脚本中运行该命令,但实际上运行该命令的另一个(固定的!)版本的可能性?

你现在明白为什么S.Lott试图让你削减华夫饼干并专注于导致错误的SQL片段吗?