WHERE - NULL não está funcionando no SQLit
Aqui está um estranho:
Eu posso filtrarNOT NULLS
do SQLite, mas nãoNULLS
:
Isso funciona
SELECT * FROM project WHERE parent_id NOT NULL;
Estes não:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
Todos retornam:
Há um problema com a sintaxe da sua consulta (a consulta não foi executada) ...
ATUALIZA:
Estou fazendo isso com PHP - através do meu código com ezSQl e usando o PHPLiteAdmin interface
Usando oemonstração @PHPLiteAdmin, essa expressão funciona - então agora estou suspeitando de um problema de versão com o SQLite do meu PHP? Poderia ser isso? Essa expressão não foi sempre válida?
UPDATE 2:
Quando executo o código do PHP usando o ezSQL, o aviso do PHP é:
PHP Warning: Erro de lógica SQL ou banco de dados ausente
Existe uma maneira de obter mais informações do PHP? Isso é irritantemente opaco e estranho, especialmente porque a mesma declaração na CLI funciona bem ...
UPDATE 3
A única outra pista possível que tenho é que os bancos de dados que eu crio com PHP não podem ser lidos pela CLI e vice-versa. Eu recebo
Erro: o arquivo está criptografado ou não é um banco de dado
Então há definitivamente dois sabores SQlite batendo cabeças aqui. Veja iss) Ainda assim, por que a declaração inválida
UPDATE 4
OK Acho que rastreei o problema até o culpado, se não o motivo. O banco de dados que criei com o PHP ezSQL é aquele em que a instrução IS NULL falha. Se eu criar o banco de dados usando a classe SQLite3 do PHP, a instrução funcionará bem e, além disso, eu posso acessar o banco de dados na CLI, enquanto o banco de dados criado pelo ezSQL forneceu ofile is encrypted
erro.
Então, eu fiz uma pequena pesquisa no código ezSQL - fora do bastão, eu vejo que ele usa métodos PDO, não a classe SQLite3 mais recente. Talvez isso seja algo - eu não vou perder mais tempo com isso ...
m qualquer caso, encontrei minha solução, que é evitar o ezSQL e usar a classe SQLite3 do PH