【问题标题】:OperationalError creating an index in sqlite在 sqlite 中创建索引的 OperationalError
【发布时间】:2010-03-05 05:37:18
【问题描述】:

编辑: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:代码太多。你能把它减少到只显示问题的代码吗?显示错误的最小 SQL?然后用简短的代码示例替换 looooong 代码示例?
  • 减去错误处理和 sql,那里有 14 行代码。我花了一个小时将代码缩短到这一点,这是我能得到的最小的代码,同时仍然得到错误。
  • @Nathan Spears:勇敢,但问题仍然很大。什么是“testIndexes”代码?还有所有的“verifyIndexes”代码?您能否真正减少您在此处发布的代码量,以便最小限度地显示问题。
  • @S.Lott:做 OP 应该做的事情:冷静下来,放慢速度,仔细阅读问题开头的 CREATE INDEX 语句,如果你没有发现那一行当您到达第 6 个 CREATE INDEX 语句时导致问题,请返回第 1 步。如果这不起作用,请阅读我的答案。
  • 问题是我缺少一个 ON 关键字。经过一个小时以各种可能的方式重新排列代码和脚本,同时完成了明显的遗漏,我有了一个测试功能和几个验证功能。因为我没有看到这一行的差异,我认为问题与我运行 python 代码的方式或脚本顺序或一些神秘的东西有关,这就是我发布所有这些的原因。你是对的,我应该进一步缩小问题范围,但是第 22 条军规:如果我正确缩小了问题范围,我就不会在此处发布。

标签: python sql sqlite indexing


【解决方案1】:

一些愚蠢的问题:

冒犯性的陈述缺少ON这个词是不是巧合?

如果不存在则创建索引 IDX_FILE_FULLPATH_FILE_PARENT_DIR ON table_name (file_fullpath, file_parent_dir);
如果不存在则创建索引 IDX_FILE_SIZE table_name (file_size); -- 缺少开启
如果不存在则创建索引 IDX_TAG_TITLE ON table_name (tag_title);

在您问题的所有措辞中,我是否看到了“语法错误”这个短语?

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

例如

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 片段吗?

【讨论】:

  • 这不是巧合,但我已经盯着它看了太久,看不出遗漏了什么。我在原始帖子中非常清楚地概述了 sql 问题是什么。我已经分解了脚本中的每一行并单独运行它们,这就是我确定哪一行是问题的方法,但不知何故我只是没有看到缺少的关键字。我以为我什至将工作脚本中的行复制并粘贴到“损坏的脚本”,但显然我没有。感谢第二双眼睛!
猜你喜欢
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 2014-11-09
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多