Historique : bug mysql avec la fonction groupement

Bonjour,

J’ai voulu tester la fonction groupement (somme par heure) dans la partie historique sur une info binaire.
Et depuis lors, j’ai une erreur MySQL quand je veux afficher l’historique de cette info:

[MySQL] Error code : 42000 (1055). Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jeedom.history.datetime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by : SELECT `cmd_id`,`datetime` as `datetime`,SUM(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE cmd_id=:cmd_id AND datetime>=:startTime AND datetime<=:endTime GROUP BY CONCAT(DATE(`datetime`), '/', HOUR(`datetime`)) ORDER BY `datetime` ASC`

Et donc j’aurais voulu savoir comment revenir à la normal?
Je ne trouve pas où et comment changer les paramètres pour retrouver un fonctionnement normal de l’historique de cette info

Si vous avez des idées
D’avance merci

Bonjour.

Supprimez l’historique de cette commande pour récupérer les fonctionnalités qui vous cause un problème.

J’ai essayé sans succès.

Quand vous allez sur la commande même de l’équipement.
En supprimant « historiser » sur l’état de l’information qui ne fonctionne plus.

Cela devrait le faire non ?

Oui c’est ce que j’ai fais sans succès. J’ai même essayé en supprimant l’historique puis en décochant « historisé »

Bonjour,
J’ai le meme probleme, j’ai fait une recherche et je suis tombé ici.

[MySQL] Error code : 42000 (1055). Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jeedom.history.datetime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by : SELECT `cmd_id`,DATE(`datetime`) as `datetime`,MAX(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE cmd_id=:cmd_id AND datetime>=:startTime AND datetime<=:endTime GROUP BY CONCAT(YEAR(`datetime`), '/', MONTH(`datetime`)) ORDER BY `datetime` ASC

J’ai une commande qui récupère ma conso mensuelle et je voulais grouper pour avoir le max de chaque mois et cela m’indique maintenant cette erreur au dessus.

D’ou vient cette erreur ? j’aimerai si possible éviter de supprimer l’historique en fait…

J’ai testé ce groupement sur une autre commande et cela fait exactement la meme chose
il y a donc un soucis.

Bonjour,

@NicoRaptor et @lamor quel version de jeedom utilisez-vous?

Bonjour,

J’ai la 4.1.25, mais quand j’ai activé ce groupement c’était il y au moins 6 mois, donc j’étais sur une plus ancienne version.

Je me demande si ce n’est pas du a une configuration de mysql ?

On lit dans l’erreur : « this is incompatible with sql_mode=only_full_group_by »

Et d’apres la doc, les modes par défaut de mysl sont :

The default SQL mode in MySQL 8.0 includes these modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, and NO_ENGINE_SUBSTITUTION.

https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sql-mode-setting

Est ce que pour jeedom fonctionne correctement il faut désactiver certains modes ?

OK je voulais surtout être sûr que ce n’était pas la 4.2 en fait.

Pour le reste je ne sais pas dire, je n’ai pas assez approfondi la question.

Hello,

J’étais en trains de regarder l’historique de la température extérieure, j’ai commencé par faire une moyenne par jour, et tout était ok.

Puis j’ai voulu faire une moyenne par mois, et cela m’a directement affiché l’erreur suivante :

[MySQL] Error code : 42000 (1055). Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jeedom.history.datetime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by : SELECT `cmd_id`,DATE(`datetime`) as `datetime`,MAX(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE cmd_id=:cmd_id AND datetime>=:startTime AND datetime<=:endTime GROUP BY CONCAT(YEAR(`datetime`), '/', MONTH(`datetime`)) ORDER BY `datetime` ASC

Est ce qu’il y aurait pas une erreur dans la requête ?

est ce qu’on est les seuls a avoir ce soucis ?

Quelqu’un pourrait tester un groupement par mois ?

Ben vous êtes en 4.1.25.
Faudrait déjà voir si en 4.1.27 dc la dernière c tjrs la…
Apres tt un bug doit être remonté sur la dernière stable. Au cas ou…

Merci pour la réponse, mais depuis le dernier message, je suis effectivement passé en 4.1.27.

Ah ben on peut pas le deviner !

Bonjour, je n’ai pas encore testé, mais apparemment le probleme proviendrait des requêtes que jeedom utilise qui ne sont pas assez précises, voir ici : only_full_group_by — Formation Apprendre MySQL | Grafikart

Extrait :
Depuis que mysql a ajouté le le mode ONLY_FULL_GROUP_BY sur les dernière versions, cela sort une erreur.
Avant cela, mysql se contentait de renvoyer une ligne (sans une logique déterminée pour le choix de la ligne) ce qui pouvait engendrer des inconsistances.

Donc la solution serait de supprimer le mode ONLY_FULL_GROUP_BY ou que les requêtes de Jeedom soient modifiées.

Est ce possible de poster le résultat de cette commande sql ?

mysql> SELECT @@SESSION.sql_mode;

Merci

Bonjour,

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Merci !

Perso j’avais ca :

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |

Cela confirme donc que ce ONLY_FULL_GROUP_BY pose probleme.

J’ai reconf le service mysql en supprimant ce mode et c’est maintenant ok.

Si @NicoRaptor peut confirmer, je pense que le probleme est résolu.

Salut,
je ne pourrais confirmer car peut de temps après. J’ai refais une nouvelle installe de jeedom.
je suis passer en sur une VM. Donc je n’ai plus ce problème et je n’ai pas voulu retenter l’exp mdrrr.
Donc si cela à résolu ton problème. cool ^^
Et merci au protagoniste d’avoir aidé lamor

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.