Problème :
Lors de l'exécution d'un requête qui inclut des colonnes non agrégées dans la clause GROUP BY, vous rencontrez le problème suivant erreur :
#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by
Raison :
Cette erreur se produit lorsque vous avez des colonnes non agrégées dans la liste SELECT qui ne sont pas incluses dans la clause GROUP BY. Dans MySQL version 5.7.12, le mode SQL only_full_group_by est activé par défaut, ce qui applique des règles de regroupement plus strictes.
Solution :
Pour résoudre cette erreur, vous pouvez soit :
1. Ajoutez les colonnes non agrégées à la clause GROUP BY :
Cela garantit que la requête ne renvoie que les lignes qui ont les mêmes valeurs pour toutes les colonnes de la clause GROUP BY.
SELECT libelle, credit_initial, disponible_v, SUM(montant) AS montant FROM fiche, annee, type WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee AND annee = YEAR(CURRENT_TIMESTAMP) GROUP BY libelle, credit_initial, disponible_v ORDER BY libelle ASC;
2. Désactivez le mode SQL only_full_group_by :
Cela permet à la requête de renvoyer des lignes qui peuvent ne pas avoir les mêmes valeurs pour toutes les colonnes de la clause GROUP BY.
sudo vim /etc/mysql/conf.d/mysql.cnf
Faites défiler jusqu'à en bas du fichier et ajoutez les lignes suivantes :
[mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Enregistrez et quittez vim. Redémarrez MySQL :
sudo service mysql restart
Après le redémarrage de MySQL, la requête devrait s'exécuter avec succès sans erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!