2017-08-08 2 views
1

J'ai une procédure stockée qui fonctionnait bien sur MySQL 5.6. Lors d'une récente migration de serveur, nous avons effectué une mise à niveau vers MySQL 5.7.19.Procédure stockée augmentant "incompatible avec sql_mode = only_full_group_by" malgré que sql_mode soit vide

Ma procédure stockée jette maintenant l'erreur:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utility-monitor.daily_readings.building_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by: CALL monthly_readings(2017, 1, NULL, 1, 1))

J'ai mis le sql_mode à "" via le fichier /var/mysql/my.cnf, remis en marche le service mysql et connecté via la console pour confirmer que sql_mode est vide par En dépit de tout cela, je continue à recevoir l'erreur ci-dessus lorsque j'essaie d'exécuter ma procédure stockée. Que puis-je faire pour continuer le dépannage d'où cette erreur provient?

+0

'ONLY_FULL_GROUP_BY' est la valeur par défaut de MySQL 5.7. – Barmar

+0

https://stackoverflow.com/questions/23921117/disable-only-full-group-byCeci – Jenish

Répondre

2

Selon le documentation, MySQL utilise le mode SQL qui était actif lors de la création de la procédure:

MySQL stores the sql_mode system variable setting in effect when a routine is created or altered, and always executes the routine with this setting in force, regardless of the current server SQL mode when the routine begins executing.

recréent donc la procédure (ou tout, car il pourrait ne pas être le seul touché) avec mode différent activé (ou corriger la syntaxe group by). En modifiant, la procédure, bien que mentionnée dans la documentation, ne suffit pas. Vous devriez envisager de ne pas changer le mode sql de façon permanente pour cela (bien que vous puissiez avoir d'autres codes incompatibles).