这是一个奇怪的一个:WHERE - IS NULL在SQLite中不起作用?
我可以NOT NULLS
从SQLite的过滤器,但不NULLS
:
这工作:
SELECT * FROM project WHERE parent_id NOT NULL;
这些不:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
全部退货:
There is a problem with the syntax of your query (Query was not executed) ...
UPDATE:
我通过我的ezSQl代码PHP的这样做的,使用PHPLiteAdmin接口
使用PHPLiteAdmin demo,这种表达工程─所以我现在怀疑我的PHP的SQLite版本问题?那可能吗?这种表情总是有效吗?
更新2:
当我运行使用ezSQL从PHP代码,PHP的警告:
PHP Warning: SQL logic error or missing database
有没有办法获得更多的信息了PHP的?这是令人发狂的不透明和怪异,特别是因为在CLI相同的语句正常工作......
更新3
唯一的其他可能的线索,我是说我用PHP创建数据库不能通过CLI读取,反之亦然。我得到:
Error: file is encrypted or is not a database
因此,这里有两个SQlite口味对接头。 (See this)仍然,为什么无效的声明?
UPDATE 4
OK我想我已经追踪问题的罪魁祸首,如果不是reason-我用PHP ezSQL创建的DB是一个在IS NULL语句失败。如果我使用PHP的SQLite3类创建数据库,那么声明可以正常工作,而且,我可以从CLI访问数据库,而ezSQL创建的数据库给出了file is encrypted
错误。
所以我做了一点挖掘ezSQL代码 - 蝙蝠我看到它使用PDO方法,而不是新的SQLite3类。也许这是一些东西 - 我不会浪费更多的时间...
在任何情况下,我发现我的解决方案,这是为了避开ezSQL,只使用PHPs SQLite3类。
你的第一个'IS NULL'语法是正确的。在这种情况下,您需要告诉我们您如何将该命令发送给SQLite。该错误消息看起来不像来自sqlite3命令行界面。使用phpliteadmin http://www.danedesigns.com/phpliteadmin.php并与ezsql –
Larry-通过PHP的是PHPLiteAdmin被虚报了一些其他问题。可能是丢失或错误定位的数据库文件,或其他任何东西。 – Yarin
我猜我的PHP代码 –