J'ai mis à niveau mon système et j'ai installé MySql 5.7.9 avec php pour une application Web sur laquelle je travaille. J'ai une requête qui est créée dynamiquement, et lorsqu'elle est exécutée dans les anciennes versions de MySql, cela fonctionne bien. Depuis la mise à niveau vers 5.7, j'obtiens cette erreur:
L'expression n ° 1 de la liste SELECT n'est pas dans la clause GROUP BY et contient la colonne non agrégée 'support_desk.mod_users_groups.group_id' qui ne dépend pas fonctionnellement des colonnes de la clause GROUP BY; cela est incompatible avec sql_mode = only_full_group_by
Notez la page de manuel de Mysql 5.7 sur le sujet des modes SQL du serveur .
C'est la requête qui me pose problème:
SELECT mod_users_groups.group_id AS 'value',
group_name AS 'text'
FROM mod_users_groups
LEFT JOIN mod_users_data ON mod_users_groups.group_id = mod_users_data.group_id
WHERE mod_users_groups.active = 1
AND mod_users_groups.department_id = 1
AND mod_users_groups.manage_work_orders = 1
AND group_name != 'root'
AND group_name != 'superuser'
GROUP BY group_name
HAVING COUNT(`user_id`) > 0
ORDER BY group_name
J'ai fait quelques recherches sur la question, mais je ne comprends pas only_full_group_by
assez pour comprendre ce que je dois faire pour résoudre la requête. Puis-je simplement désactiver l' only_full_group_by
option ou dois-je faire autre chose?
Faites-moi savoir si vous avez besoin de plus d'informations.
not a GROUP BY expression
" C'est ça. Ils pourraient tout aussi bien avoir un code d'erreur numérique et aucun message.