Resolvendo Problemas Com Registros Não Encontrados
If you have a complicated query that has many tables and that doesn't return any rows, you should use the following procedure to find out what is wrong with your query:
- Teste a consulta com
EXPLAIN
e verifique se você pode encontrar alguma coisa que está errada. Leia "Sintaxe deEXPLAIN
(Obter informações sobre umaSELECT
)". - Selcione apenas aqueles campos que são usados na cláusula
WHERE
. - Remova uma tabela por vez da consulta até que ela retorne alguns registros. Se as tabelas são grandes, é uma boa idéia usar
LIMIT 10
com a consulta. - Faça um
SELECT
da coluna encontrou um registro com a tabela que foi removido por última da consulta. - Se você estiver comparando colunas
FLOAT
ouDOUBLE
com números que tenham decimais, você não pode usar'='
. Este problema é comum na maioria das linguagens de computadores porque valores de ponto-flutuante não são valores exatos. Na maioria dos casos, alterar oFLOAT
porDOUBLE
corrigirá isto. Leia Seção A.5.7, "Problemas com Comparação de Ponto Flutuante". - Se você ainda não pode imaginar o que está errado, crie um teste mínimo que possa ser executado com
mysql test < query.sql
e possa mostrar seus problemas. Você pode criar um arquivo de teste commysqldump --quick banco_de_dados tabela > query.sql
. Abra o arquivo em um editor, remova algumas linhas inseridas (se houver muitas) e adicione sua instrução select no fim do arquivo.Teste se você ainda está tendo problemas fazendo:
shell>
mysqladmin create test2
shell>mysql test2 < query.sql
Envie o arquivo de teste usando
mysqlbug
para lista de email gerais do MariaDB. Leia "As Listas de Discussão do MariaDB".