這是一個奇怪的一個: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代碼 –