On_mqtt_message raised an Exception : [MySQL] Error code : 23000 (1062). Duplicate entry

Bonjour

Depuis quelques jours j’ai des dizaines, centaines, milliers de messages de ce types que je vide tous les jours.
C’est arrivé sans manipulation particulière de ma part que je sache.

comment corriger ceci sans supprimer tous mes équipements pour refaire les entrées en BDD proprement ??

Alors il semble que si on refait le broker cela corrige le pb mais aucune certitude la dessus et surtout cela refait des commandes sur des topics que l’on ne souhaite pas et on monte le compteur des ID inutilement
image

J’espère que la base des ID est infini sinon je vais casser la baraque :slight_smile:

Merci de l’aide que vous pouvez apporter à la résolution de ce problème

Bonjour @jerome6994,

Il existe déjà quelques sujets du même style sur Commu :

Mais on ne nous a pas donné de traces précises, donc si tu veux bien on va regarder ça ensemble.

Déjà, peux-tu m’en dire plus sur ton materiel et tes versions (Jeedom, jMQTT) ?
(RPI 4 - 64Bits : Jeedom 4.1.19 3 RPI3B+ dans ton profil, mais j’imagine que ce n’est pas à jour)
Quels autres plugins utilises-tu ? (snapshot page Santé)
De combien d’équipements et de cmd disposes au total dans Jeedom ? (voir « Résumé domotique »)
Combien as-tu d’équipments jMQTT ? (snapshot page équipements jMQTT)
Tu vois quelque chose d’autre en erreur dans les logs ?

Pas de nouvel ajout d’équipement sur Jeedom? ou de machine sur le réseau ?
Pas de mise à jour de quelque plugin de ce soit ? ou du système ?
Pas de restauration ? de reboot ?
Pas de script ou de modification en live sur la BDD ?
Rien d’autre qui tourne sur la même machine que Jeedom ?
Absolument rien ?

Normalement il suffit de désactiver l’ajout automatique de commandes (regarde la Solution du 1er lien un plus haut).

Avant de planquer le problème sous le tapis, pourrais-tu stp mettre tout jMQTT en débug (plugin et brokers), redémarrer le daemon et prendre des traces de ce qui se vautre ?
Puis m’envoyer tous les logs jMQTT et les logs autres logs pertinents, ici ou en message privé, car ce n’est pas « normal » et il nous faut des traces pour investiguer.

Non, il n’est pas improbable que refaire l’équipement puisse solutionner, mais pas le broker.
On voit bien dans les messages que tu as envoyé que le problème semble lié à une collision entre les commandes :
3219-Garage:ECL_Garage:113:1:Power_Management:Load_error_status et
3219-Buanderie:Impr_3D:status.

Je te suggère chaudement d’utiliser des noms de commande moins longs, car des problèmes existent avec les noms trop longs. La limite était encore à 45 caractères il y a 2 ans, 127 caractères depuis).

Non elle ne l’est pas, mais tu as encore de la marge, car le max est 2147483647, l’id de cmd étant déclaré comme (SIGNED) INT.

Bad

1 « J'aime »

Merci de ton retour
A la vue de la liste de courses :crazy_face: il me faudra un peu plus que le trajet de métro pour répondre et construire la réponse mais c’est bien noté.

En attendant j’ai quand même résolu le problème en créant des broker dédié pour mon Zwavejs2mqtt et Shelly afin de ne pas être polué du reste.
J’ai donc changé tout mes équipements de broker et plus de messages

Je vais néanmoins partager toutes les réponses et questions sur le sujet pour faire avancer le sujet.

Ça, c’est très étonnant !

Mais j’attends ton retour pour avancer :wink:

Alors effectivement j’ai profité pour en faire la mise à jour :wink:
NUC8i5BEH avec un VM 32Go et 4Go de RAM
Jeedom dans sa dernière version stable
Pour les plugin j’ai ceux ci en actif

Mon résumé domotique me donne ceci
image

Dans jMQTT je dispose du zwavejs2mqtt (27) et de mes Shelly (2)
Tiens d’ailleurs j’en profite pour te demandé une amélioration pour simplifier le comptage c’est de mettre entre paranthèse le nombre d’équipement au niveau de chaque broker comme nous l’avons sur pas mal de plugin :wink:
image

Pour les log je te donne le fichier directement c’est tout le même code sauf la dernière ligne qui doit être lié à la mise en place de mes deux broker (même IP mais filtré sur un topic en particulier). Oui j’ai bataillé un peu car j’avais pas filtré au début.
jMQTT_log.txt (283,3 Ko)

J’ai ajouté 2 capteurs Xiaomi sur z2m mais non lié à jMQTT mais à zigbeelinker

si je ne me trompe pas c’est les mises à jour du mois de mai

Aucune restauration de système, ni de VM

Aucun travaux avec adminer depuis des mois

Aucun système autre que jeedom et les plugin associé
Même pas mosquitto qui est indépendant
Après je ne sais pas te dire absolument rien mais j’ai rien mis moi de mon coté

mode debug fait sur jMQTT
pas de broker sur cette VM donc pas de debug (en tout cas je ne sais pas le récupérer sur ma VM dédiée)

Oui je comprends ça aussi mais j’ai lu sur comunity que le fait de changer de broker sur l’équipement pouvait corriger le pb.
Donc j’ai refait mes broker pour les filtrer puis sur chaque équipement j’ai changé le broker associé
J’avais commencé par tester en refaisant de 0 l’équipement mais pas viable il faut refaire les widget, les virtuels, les scénarios etc…

ça mets à mal toute mes règles de nommage pour savoir exactement parmi tous mes équipements où je suis et la nature de l’équipement :frowning:
Je suis quand même loin des 127 caractères à moins que l’on compte toute la chaine #[Salon][PC_Salon_Lampadaire][Consommation]#

Bon voilà j’espère que j’ai tout répondu c’est dense mais je pense que tout est là

4 « J'aime »

Merci pour toutes ces infos, c’est top :+1:
Je n’ai pas trop de temps dans la journée, mais je regarde tout ça avec attention ce soir ou demain :slight_smile:

Aucun problème pour moi tu as le temps que tu as besoin
Il semble que le contournement que j’ai fait fonctionne donc plus de pollution de message chez moi
C’est pour toi et pour le plugin pour corriger la faille et ajouter le nombre d’équipements par broker entre parenthèses :rofl:

1 « J'aime »

J’ai eu le même souci
Conf #plugin-mqtt2 pour installer un docker mqtt sur #plugin-docker2
#plugin-zigbee2mqtt qui est connecté au broker mosquitto si dessus
#plugin-vlxmqtt, idem
#plugin-jmqtt connecté au broker ci-dessus, sur lequel je gère mes Shelly (une 10aine).

Alors que tout semblait marcher, j’ai eu ces messages sur jmqtt pour tous mes Shelly. Pour les supprimer, j’ai désactivé la création automatique des commandes.

Hello @jerome6994,

Plus de problèmes depuis ?

Je ne pense pas que les modifications que tu as fait puissent être responsables du bug.
Par contre, pendant la maj du Core, il est possible que le daemon php n’ait pas pu récupérer les commandes existantes et donc que l’inclusion automatique soit parti en vrille ensuite en tentant de générer des commandes déjà existantes.

Merci, fait dans la dernière Béta (nombre en début de ligne) :

Dans les logs, il y a visiblement d’autres commandes en collision mais toutes avec l’équipement 3219, peux-tu me faire une capture d’écran des commandes de cet équipement stp ?

Je regarde pour augmenter la verbosité dans la beta lors de on_mqtt_message raised an Exception.

Bad

Super dommage que ce soit pas comme le standard des autres plugin mais en terme de wording cela se tient bien :wink:

Alors j’ai cherché dans mon résumé domotique la commande 3219 mais il n’y en a pas du tout !
C’est peut être la cause du coup !

Autre idée d’amélioration au niveau de la barre de recherche qui est tout en haut
Est-il possible de faire comme sur les autres plugin afin d’avoir la aussi du standard une barre de recherche plus au niveau de chaque broker suivant les flèche rouge ou sinon si c’est une barre pour tout au niveau de la flèche bleu ? C’est du visuel et du parcours souris mais important je trouve je suis toujours en train de la chercher cette barre de recherche
image

Je pense que le 3219 est un équipement, pas une commande. Regarde peut être aussi dans la liste des équipements récemment supprimés.

A voir, je mets dans la Todo, je ne sais pas si on peut chercher facilement sur un sous-ensemble d’équipements.

Des idées de con ou à la con je peux en voir plein tu sais :slight_smile: UX Design est passé par mon bureau à un moment de ma carrière

Par contre rien dans l’historique des suppressions, c’est vraiment bête que je n’ai pas fait attention à ça dès le début :frowning:

Bonjour @Bad

Je reviens vers toi sur des messages un peu trop régulier dans les logs et dans le centre de message :slight_smile:

Ils arrivent en cliquant ici

Ci joint un extrait de log :
jMQTT.txt (1,1 Mo)

Et surtout je n’arrive pas à l’arrêter là

Tu as désactivé « Ajout automatique des commandes » sur tes équipements ?
Normalement ça stop le pb.

Le « Nettoyage de la base de données » lance le script cleaning.php qui est assez intensif sur la BDD.

A mon sens, il ne devrait pas être lancé sans avoir au préalable désactivé tous les scenarios et les plugins, il consulte et modifie trop de choses à la volée, mais ces désactivations ne sont pas implémentées dans le script…

Pour ce qui est du problème de fond ([MySQL] Error code : 23000 (*). Duplicate entry), serais-tu à l’aise pour passer sur la [EDIT: branch beta] ?
Le daemon php y est supprimé et les retours que j’en ai à date sont très bon.

Bad

alors sur les équipement oui mais pas la dessus

Je viens de corriger, mais cela ne semble pas du tout efficace ou alors j’ai des milliers de message en attente ! je suis à 25500 messages depuis mon message de ce matin !
edit : plus de message c’est ok il a fallur que j’enregistre de nouveau cette équipement
image

Possible mais pas de mise en garde particulière sur ce que tu expliques, et depuis 3 ans que je suis Jeedom c’est pas la 1ère fois que je le fais sans dommage particulier. Mais je prends le conseil sans souci.

Je ne sais pas si je suis à l’aise sur le passage sur la branche dev, je ne l’ai jamais fait.
Je suis juste en version béta parfois si c’est ce que tu entends je peux basculer oui

Si c’est autre chose je peux le faire avec quelques explications en MP

Hello,

Ravi que tes logs ne se remplissent plus vitesse grand V !

Non, il s’agit bien d’une autre branche, de dev justement, encore avant la beta :grin:

Je vais voir avec Domochip sous combien de temps on peut la passer en beta. J’ai de toute façon encore 4-5 chose à y intégrer avant de faire les tests fonctionnels en profondeur. De plus, il y a déjà eu une grosse maj semaine passée, donc je ne voudrais pas que les utilisateurs aient l’impression de devoir tout le temps upgrader…

Je comprends bien
Mais si cela corriger des soucis de ce type pas d’inquiétude sur les màj fréquente ou non
En tout cas cela ne me dérange pas du tout
Il peut y avoir des màj tous les jours pendant une période et rien pendant des mois :wink:

1 « J'aime »

La branche dev est passée en beta cette nuit, tiens moi au courant si ton problème réapparaît sans le daemon php. :grin:

Ok je regarde ça et je te redis
Je vais tenter de faire les mêmes manipulations pour tenter de reproduire

Bonjour @Bad

J’ai installé ce matin la béta.
A l’installation de la béta, j’ai relancé les dépendances et j’ai relancé le démon.

Merci pour la barre de recherche déjà :wink: et le nombre d’équipement en face de chaque brocker

Par contre pour moi le compte d’équipement devrait être 2 et pas 3 car dans les fait les vrais équipements physique sont ceux entourés
Mais comme vont dire certain c’est du détail et je sais faire une soustraction :rofl:

Sinon sur le sujet principal du poste j’ai refait la manip qui avait engendré mes 25500 messages en bon vieux bourrin !!!
Et bien RAS pas de réaction particulière