Erreur récurrente (sur history::archive() : [MySQL])

Bonjour, j’ouvre se sujet car depuis mon installation de Jeedom sur Docker sur NAS Synology, j’ai une erreur récurrente sur le centre de message tout les jours à 5h00min05sec :

Erreur sur history::archive() : [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 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime

Merci d’avance pour votre aide.

Slts

Bonjour,
Après une maj de jeedom hier, j’ai 39 Erreurs, style :
Erreur l’archivage des historiques : {« cmd_id »:« 5104 »,« archivePackage »:3600,« archiveTime »:« 2020-04-21 03:00:04 »} => [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 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime

Bonjour,

J’ai le même phénomène :
Une erreur journalière depuis février, et depuis la mise à jour en 4.0.51 plusieurs d’erreurs du même type par jour (à 5h du matin)

Je pense que le problème est le même que celui discuté ici :

Le correctif est embarqué dans la v4.1

Bonne journée

Bonjour, Merci pour le retour, je vais donc attendre la mise à jour.
Je suis bien en version 4.0.51.
Cordialement

Bonjour,

Non, ce n’est pas le même problème.
Dans le post que vous citez, l’erreur Duplicate entry à cause du INSERT INTO a été corrigée dans la 4.0.42

Bonjour,

Donc c’est une nouvelle erreur MySQL apparue en 4.0.51 ?

Voici un extrait du log de ce matin.
50 erreurs en tout, j’imagine que la quantité est reliée au nombre de commandes de mon installation.


[2020-04-23 05:00:09][ERROR] : Erreur l’archivage des historiques : {« cmd_id »:« 665 »,« archivePackage »:3600,« archiveTime »:« 2020-04-23 03:00:06 »} => [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 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime <= :archiveTime AND cmd_id=:cmd_id AND value IS NOT NULL GROUP BY UNIX_TIMESTAMP(datetime) DIV :archivePackage


Y a t il d’autres personnes à avoir cette erreur ?

Cordialement

Bonjour,

Oui depuis plusieurs semaines (si ce n’est mois) j’ai une erreur qui apparaît de temps en temps, et jamais pris le temps de m’en occuper :

[2020-03-24 05:00:12][ERROR] : Erreur sur history::archive() : [MySQL] Error code : 22003 (1264). Out of range value for column ‹ (null) › at row 1 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime <= :archiveTime AND cmd_id=:cmd_id AND value IS NOT NULL GROUP BY UNIX_TIMESTAMP(datetime) DIV :archivePackage

Et depuis le 22/04, je viens de me manger 14 alertes :

[2020-04-23 05:00:11][ERROR] : Erreur l’archivage des historiques : {« cmd_id »:« 2589 »,« archivePackage »:3600,« archiveTime »:« 2020-04-23 03:00:11 »} => [MySQL] Error code : 22003 (1264). Out of range value for column ‹ (null) › at row 1 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime <= :archiveTime AND cmd_id=:cmd_id AND value IS NOT NULL GROUP BY UNIX_TIMESTAMP(datetime) DIV :archivePackage

Comme sur les dernières j’ai un ID de commande j’ai vérifié, et ils sont tous liés à mon plugin « Téléinformation » (remontée des données du compteur électrique).

Ceux qui ont ces messages vous l’utilisez aussi ? Ça pourrait être une piste ?

Version 4.0.51 sur une Debian 10.

Hello,

Idem… 80 messages en 10 secondes…

Après investigation, j’ai remarqué que chaque message d’erreur correspond à une commande qui a l’historique d’activé.

Pour ma part, j’ai une cinquantaine de commandes historisées, donc une cinquantaine de messages d’erreurs.

Mise à jour en V4.0.52 aujourd’hui, on verra ce que ça donne.

Oui, je viens de faire l’update également. 40 messages avant, à voir ce soir !

Moi j’ai fait la mise à jour V4.0.52 hier dés qu’elle est sortie.

Ce matin une trentaine de messages…
Erreur l’archivage des historiques : {« cmd_id »:« 1699 »,« archivePackage »:0,« archiveTime »:« 2020-04-25 03:00:11 »} => [MySQL] Error code : 22012 (1365). Division by 0 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime

Et mon plugin SIGRY LINKY qui renvoit encore des erreurs , il ne récupère plus les données… ca avait remarché quelques jours…ca recommence , je sais pas si c’est lié.

Bonjour,

Bon toujours les mêmes messages ce matin, une trentaine!

2020-04-26 05:00:14 history Erreur l’archivage des historiques : {« cmd_id »:« 1338 »,« archivePackage »:0,« archiveTime »:« 2020-04-26 03:00:12 »} => [MySQL] Error code : 22012 (1365). Division by 0 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime

Bonjour @syn, @kemar, @Spielbrick , @Kyoshi

Pour division par zéro voir mon post plus loin : Erreur récurrente (sur history::archive() : [MySQL]) - #39 par jpty

Probablement que les données de la table history qui vont être transférées dans la table historyArch ne sont pas clean.
Pour savoir qui a créé ces données, il faudrait exécuter cette requête SQL dans Réglages/Système/Configuration onglet >_OS/DB bouton Ouvrir à coté de Administration Base de données:
Pour Yann55 la commande est:

select * from cmd where id = 1699 or id = 1338 

Pour les autres, adaptez la requête à la cmd_id présente dans le message d’erreur.
Dans la colonne eqType, vous aurez le plugin et dans la colonne name vous aurez le nom de la commande archivée.

Comme la plupart des erreurs dans cette discussion sont sur des cmds horodatées à 3h00, il faudrait regarder dans le moteur des taches, ce qui est lancé à 3h sur vos Jeedom. ( backup ? )

Il suffirait peut être alors de déplacer de déplacer l’heure de la tache lancée à 3h00 pour résoudre les erreurs.

Toujours les mêmes erreurs (39 erreurs par jour), par contre chez moi c’est à 5h00 !

[2020-04-25 05:00:14][ERROR] : Erreur l’archivage des historiques : {« cmd_id »:« 936 »,« archivePackage »:3600,« archiveTime »:« 2020-04-25 03:00:04 »} => [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 : REPLACE INTO historyArch(cmd_id,datetime,value) SELECT cmd_id,datetime,avg(CAST(value AS DECIMAL(12,2))) as value FROM history WHERE datetime <= :archiveTime AND cmd_id=:cmd_id AND value IS NOT NULL GROUP BY UNIX_TIMESTAMP(datetime) DIV :archivePackage

Bonjour @syn

L’erreur se produit bien à 5h00 au moment de l’archivage mais elle concerne des données archivées à 3h00
"archiveTime":"2020-04-26 03:00:05"

Quelle est la tâche lancée sur votre Jeedom à 3h ?

Je ne sais pas, rien de ce que j’ai mis en place !

Dans le moteur des taches, il doit bien y avoir une tache programmée à 3h00 ?

00 03 * * *

dans la colonne programmation.

Vous avez essayé la requête SQL pour voir à quel plugin appartient la commande qui a un pb d’archivage ?

select * from cmd where id = 936

Merci, j’ai regardé dans la colonne programmation rien à 3h00, par contre à 5h00 j’ai sur « history » « archive », et dans mes log l’erreur vient bien de « history »

J’ai démarré la tâche , et effectivement les erreurs sont apparues.

comment fait-on pour une requête SQL ?

A quelle heure est programmée la tâche backup chez vous dans le moteur des taches ?

Pour SQL c’est dans mon post au dessus: