Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07119.jsonl.gz/290

Si vous avez des requêtes longues et compliquées, avec de nombreuses tables, et qui ne renvoie aucune ligne, vous pouvez utiliser la méthode suivante pour trouver l'erreur dans votre requête :
- Lancez la requête avec
EXPLAIN est assurez vous que tout est bon. Reportez vous à la section
EXPLAIN.
- Sélectionnez seulement les champs qui sont utilisé dans la clause
WHERE.
- Supprimez une table par une table, dans la requête, jusqu'à ce qu'elle vous retourne enfin des lignes. Si les tables sont grandes, c'est une bonne idée d'utiliser la clause
LIMIT 10.
- Effectuer un
SELECT dans la colonne qui devrait retourner des lignes, et comparez la avec la dernière table qui a été supprimé de la requête.
- Si vous faites des comparaisons entre des
FLOAT ou
DOUBLE et des nombres à virgules, vous ne pourrez pas utiliser l'opérateur
=! Ce problème est commun à la plus part des langages informatiques, car la représentation en virgule flottante n'est pas une valeur exacte.
mysql> SELECT * FROM table_name WHERE float_column=3.5;
->
mysql> SELECT * FROM table_name WHERE float_column between 3.45 and 3.55;
Dans la plus part des cas, changer le
FLOAT en
DOUBLE résoudra le problème !
- Si vous ne savez toujours pas ce qui est faux, créez un texte minimum, qui pourra être exécuté avec
mysql test < query.sql. Vous pourrez créer un fichier de teste avec
mysqldump --quick database tables > query.sql. Editez le fichier, supprimez quelques lignes (certaines sont en trop), et ajoutez votre commande à la in. Vérifier que vous avez toujours votre problème avec :
shell> mysqladmin create test2
shell> mysql test2 < query.sql
Envoyez votre test avec
mysqlbug à <email-pii>.