A consulta MySql retorna null em ocassions

1

Não sei exatamente o que está causando isso, mas, às vezes, uma consulta mysql que eu sei que deve retornar resultados às vezes retornará null como resultado. Eu já vi isso acontecer duas vezes antes, mas como eu não consegui encontrar nada no log de erros, eu apenas atualizei tudo e apenas assumi que deveria estar ok agora, mas recentemente vi o mesmo erro acontecer novamente. Existe alguma razão por que o Mysql retornaria null como resultado, mesmo quando a consulta deve retornar um valor real? No momento estou meio perplexo e meu melhor palpite seria talvez corrupção de dados? Não consigo encontrar muito no google sobre esta questão, então eu decidi pedir conselhos antes de sair comprando um novo disco rígido para o meu computador. Qualquer visão que você possa me dar sobre esse problema será muito apreciada, obrigado!

    
por patrickdamery 09.05.2016 / 00:20

3 respostas

0

Ok, então eu percebi isso. O Mysql não era o problema, como suspeitava inicialmente. O script php que é executado retorna um arquivo xml e eu estava usando o firefox para executar o aplicativo da web que executa esse script por meio de uma solicitação de ajax. Acontece que o firefox parece ter um bug que envia vários pedidos de ajax quando está lidando com arquivos xml, o que fazia com que o banco de dados fosse atualizado e, quando a segunda requisição chegou, o resultado era nulo (a atualização renderia os resultados da consulta como null ). Eu consertei isso certificando-me de que cada solicitação seja única.

Obrigado pela ajuda a todos!

    
por 05.06.2016 / 01:33
2

Desculpe por postar isso é uma resposta, minha reputação não é alta o suficiente para postar um comentário.

Sem mais detalhes sobre sua consulta, será difícil dar uma resposta.

Se a consulta é algo tão simples como "selecione * da tabela", seria estranho obter valores nulos aleatórios.

Se a sua consulta estiver usando algum tipo de cláusula where, ela poderá estar usando aleatoriamente o valor errado. Você deve tentar capturar as respostas nulas e registrar a consulta que você tentou executar.

    
por 09.05.2016 / 05:27
1

Sua melhor aposta é ativar o log de consulta geral e, em seguida, inspecionar o log de consulta e o log de erros quando você receber um resultado NULL inesperado. Para habilitar o log geral, defina isso na seção [mysqld] do seu my.cnf .

general_log_file = /path/to/query.log
general_log      = 1

Tenha em mente que, diferentemente do log binário, todas as consultas são gravadas no log geral, até mesmo as consultas SELECT, para que o log consuma muito espaço. Então, se você fizer isso, fique de olho nas coisas.

Além disso, verifique a saída de dmesg para quaisquer erros relacionados ao sistema de arquivos.

    
por 09.05.2016 / 00:39