1055: Expression not in GROUP BY (only_full_group_by) (expression absente du GROUP BY)
MySQLQue signifie cette erreur ?
Une colonne qui n'est ni dans le GROUP BY ni encapsulée dans une fonction d'agrégat a été utilisée dans la liste SELECT ou dans HAVING/ORDER BY. Le mode SQL ONLY_FULL_GROUP_BY étant activé, MySQL refuse cette expression non déterministe.
Cause
La requête sélectionne directement une colonne autre que les colonnes regroupées, mais cette colonne peut ne pas avoir une valeur unique par groupe. ONLY_FULL_GROUP_BY est activé par défaut dans MySQL 5.7+ ; les requêtes qui reposent sur l'ancien comportement permissif de GROUP BY lèvent cette erreur.
Comment la corriger
Ajoutez la colonne à la liste GROUP BY ou encapsulez-la dans une fonction d'agrégat (MAX(), MIN(), ANY_VALUE()). Si vous savez que la valeur est réellement unique au sein du groupe, ANY_VALUE() supprime volontairement l'ambiguïté. Désactiver le mode (retirer ONLY_FULL_GROUP_BY de sql_mode) au lieu de corriger la requête réintroduit le risque de résultats faux ; évitez-le.
Autres entrées pour ce moteur
- 1553Cannot drop index needed in a foreign key constraint (impossible de supprimer un index requis par une contrainte de clé étrangère)
- 3948Loading local data is disabled; this must be enabled on both the client and server sides (le chargement de données locales est désactivé ; il doit être activé côté client et côté serveur)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key (définition de table incorrecte : une seule colonne auto, qui doit être définie comme clé)
- 1267Illegal mix of collations
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size' (la transaction multi-instructions a nécessité plus que 'max_binlog_cache_size')
- 1785Statement violates GTID consistency (l'instruction viole la cohérence GTID)