2012-11-14 31 views
3

看来,SQLite的,显然是一个“兼容功能”,如果没有匹配的列中发现解析双引号标识符的字符串文字。有没有办法禁止松懈引用规则的源码?

据我所知,它这样做对谁写的SQL不当的人,以及由这些人创造的传统项目向后兼容,但它使调试对于我们这些写在全新的项目,正确的SQL非常困难。

例如,

SELECT * FROM "users" WHERE "usernme" = 'joe'; 

返回与0行的查询,因为字符串“usernme”不等于字符串“乔的。

这让我挠了挠脑袋,想知道为什么我没有得到乔的行,即使当我知道有一个用户的名字,直到我刻意回溯我的代码,并意识到我遗漏了一个。

是否有任何“严格模式” PRAGMA或API选项执行引用规则,并把所有的双引号字符串作为标识符,这样它会立刻通知我,如果一个拼错?

(请不要告诉我不要引用标识符,如果我不需要,因为任何这样的答案基本上告诉我,为了得到正确的调试,您必须首先编写错误的代码。)

回答

1

这是硬编码在SQLite的解析器和不能从外面改变。

0

我还问在SQLite的通道和人有一种足以通过源代码来查找和创建一个补丁,甚至开始在邮件列表线程描述补丁:

http://www.mail-archive.com/[email protected]/msg73832.html

这不是一个适用于官方版本的答案,但可能有一天。目前,我只是要用这个补丁自己重新编译它。

+0

我彻底的测试补丁并不能找到任何不利的影响到正确编写SQL代码。它看起来很稳固。 – Dan

相关问题