Changement de serveur : PDOException

Vous avez un soucis de développement et ce n'est pas du ressort de notre support ? N'hésitez pas à soumettre vos petits soucis de développement et à vous entre aider par la même occasion.
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Bonjour,

Voici l'erreur générée par mon application (sous CakePHP) :
2016-04-27 08:21:16 Error: [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'melies_db3.films_images.folder' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Request URL: /melies/app/webroot/index.php/displays/index/context=0001/page=1/nature=films/show=mosaic/select=inCol/sort=reference/order=desc

Je n'ai pas encore eu le temps d'investiguer cette erreur ; le changement de version MySQL est-il en cause ?

Merci par avance de votre réponse
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7941
Inscription : 2 avril 2010 à 20:14

Bonjour,

Alors oui, la nouvelle branche de MySQL 5.7 possède des gardes fous ainsi que des mécanismes de sécurités afin de ne pas exécuter des requêtes MySQL incorrectement écrites ou non optimisées.

J'ai remonté par exemple un bug d'incompatibilité entre la dernière version de PhpMyAdmin avec la branche 5.7 de MySQL et ils ont trouvés ceci :
This is due to the changes in MySQL 5.7.5+.

A query that has DISTINCT and ORDER BY is rejected as invalid if any ORDER BY expression does not satisfy at least one of these conditions:

The expression is equal to one in the select list
All columns referenced by the expression and belonging to the query's selected tables are elements of the select list
Cette condition semble correspondre à votre problème. Vérifiez dans un premier temps que le "GROUP BY" de votre requête ne soit pas superflue.

Voilà où ils en parlent dans la documentation de MySQL 5.7 :
http://dev.mysql.com/doc/refman/5.7/en/ ... l_group_by
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
Avatar de l’utilisateur
Elodie
Fondatrice / Responsable
Fondatrice / Responsable
Messages : 7941
Inscription : 2 avril 2010 à 20:14

Bonjour de nouveau,

J'ai retiré un nouveau garde fou (ONLY_FULL_GROUP_BY) de la configuration MySQL 2016 car votre problème se retrouve sur bon nombre de sites hébergés.

Normalement le problème devrai être résolu, merci de bien vouloir confirmer.
Vous avez une question ? Posez-la de préférence sur le forum et si ça demande un contact plus instantané, n'hésitez pas à vous rendre sur le t'chat IRC. Si votre question est personnelle, contactez-nous directement.
adamanbar
Messages : 1
Inscription : 19 mai 2024 à 13:01

Merci beaucoup Elodie pour ces éclaircissements et pour avoir désactivé temporairement le garde-fou ONLY_FULL_GROUP_BY.
Je comprends les nouvelles mesures de sécurité mises en place dans MySQL 5.7 et leur importance pour garantir l'intégrité des données. Cependant, comme vous l'avez souligné, cela risque d'impacter de nombreuses applications existantes dans un premier temps.
De mon côté, je vais examiner attentivement la requête posant problème et essayer d'appliquer les corrections nécessaires pour la rendre compatible avec le nouveau mode strict. Je consulterai également la documentation de CakePHP pour voir s'il existe déjà des recommandations de mise à jour.
Je vous tiendrai informée des avancées sur ce point. Et encore une fois, merci pour votre réactivité et votre accompagnement sur cette transition délicate. N'hésitez pas si vous avez d'autres conseils à me transmettre. :cote:
Répondre