J’ai migré de stretch vers buster sous jeedom 4.0.54.
Depuis les JSON de plus de 127 caractères génèrent des erreurs lors de leurs affectations aux commandes infos.
[WARNING] : exception thrown by MQTT client: [MySQL] Error code : 22001 (1406). Data too long for column 'value' at row 1 : REPLACE INTO history SET cmd_id=:cmd_id, datetime`=:datetime, value=:value
Ce sujet serait déjà connu et aurait déjà été évoqué dans la partie du forum non accessible au commun des mortels (version de mariadb plus restrictive dans buster).
Les versions 4.0.56 et 4.0.57 de jeedom n’ont apporté aucune résolution de ce bug.
Je souhaiterai savoir à partir de quelle version de Jeedom, ce bug sera résolu.
L’erreur se produit à chaque fois que mosquitto envoi le JSON de plus de 127 caractères au #plugin-jmqtt.
[2020-06-16 17:49:09][WARNING] : exception thrown by MQTT client: [MySQL] Error code : 22001 (1406). Data too long for column 'value' at row 1 : REPLACE INTO history SET cmd_id=:cmd_id, `datetime`=:datetime,
Cela fonctionnait très bien sous stretch en 4.0.54, les JSON de plus de 127 caractères ne généraient pas d’erreur.
Le fonctionnement n’étant plus le même sous buster en 4.0.54. Je ne peux que constater cette régression.
Si j’ai bien compris, le problème viendrait que mariadb sous stretch tronquait les chaînes trop grandes alors que sous buster, mariadb génère une erreur.
Est-ce spécifique au #plugin-jmqtt ? (@domotruc).
C’est bien ca mais le soucis de base est forcement une commande qui est historisé (pas le choix sinon ca charge meme pas la class php history donc la table history) qui est trop longue.
Je viens de créer une commande info historisée avec le #plugin-virtual.
Avec un bloc action dans un scénario via « event », j’ai modifié plusieurs fois la valeur de la commande info avec des chaînes alphanumériques de moins de 127c et de plus de 127c.
Toutes les valeurs s’affichent bien sur le dashboard.
Aucune erreur n’a été retournée.
Après examen de la table history, il apparaît que les valeurs de plus de 127c n’ont pas été enregistrées dans cette table.
J’en déduis que le #plugin-virtual gère le débordement (overflow) en éliminant ces valeurs.
Il conviendrait de prévenir tous les développeurs qu’ils doivent gérer dans leurs plugins les débordements.
Une manière plus simple serait que le core le gère directement.
Le plugin virtuel ne gère absolument rien la dessus il n’est de toute façon pas possible que les plugin fasse quoique ce soit la dessus sinon on aurait bien évidemment prévenu les développeurs en l’indiquant dans la doc
Je ne pense pas qu’il y ait un grand intérêt d’historiser des grandes chaînes alphanumériques surtout si c’est des chaînes JSON. Autant extraire et historiser du JSON ce qui est strictement nécessaire.
Globalement (j’ai profité du topic pour le dire) . Je transfèrerait bien vers Jeedom (Homeseer), si l’équipe ne se limitait pas à la puissance arm dans leur décisions.
Relis mon premier message il n’y a pas de régression juste une erreur masqué qui ne l’est plus. Oui un substr est simple mais dans ce cas ca induit un comportement non attendu l’utilisateur pensera historiser la chaine complete alors que c’est pas le cas il faut donc bien laisser le message d’alerte comme quoi il y a eu un soucis lors de l’historisation
Tu as toute les informations dans le poste je ne peux rien ajouter de plus maintenant.