Здесь странный:
Я могу фильтровать на 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;
Возврат:
Возникла проблема с синтаксисом вашего запроса (Query was not выполнено)...
UPDATE
Я делаю это с помощью PHP- через свой код с ezSQl и используя PHPLiteAdmin интерфейс
Используя PHPLiteAdmin demo, это выражение работает, поэтому теперь я подозреваю, что проблема с версией моего PHP SQLite? Может ли это быть? Разве это выражение не всегда было правильным?
ОБНОВЛЕНИЕ 2:
Когда я запускаю код с PHP с помощью ezSQL, предупреждение PHP:
Предупреждение PHP: ошибка логики SQL или отсутствующая база данных
Есть ли способ получить больше информации из PHP? Это безумно непрозрачно и странно, особенно потому, что одно и то же утверждение в CLI прекрасно работает...
ОБНОВЛЕНИЕ 3
Единственный возможный ключ, который у меня есть, это то, что базы данных, которые я создаю с помощью PHP, не могут быть прочитаны CLI, и наоборот. Я получаю:
Ошибка: файл зашифрован или не является базой данных
Итак, здесь определенно два аромата SQlite, торчащие здесь. (См. это) Тем не менее, почему недействительный статус
ОБНОВЛЕНИЕ 4
ОК. Я думаю, что я проследил эту проблему к виновнику, если не по этой причине. БД, созданная с помощью PHP ezSQL, является той, где сбой инструкции IS NULL. Если я создаю БД, используя класс PHP SQLite3, оператор отлично работает, и, кроме того, я могу получить доступ к БД из CLI, тогда как созданный ezSQL DB дал ошибку file is encrypted
.
Итак, я немного поработал в ezSQL-коде. Я вижу, что он использует методы PDO, а не новый класс SQLite3. Может быть, что-то... я не собираюсь тратить на это больше времени...
В любом случае, я нашел свое решение, которое должно избегать ezSQL и просто использовать класс SQLite3 для PHP.