Erreur MySQL récurrente

Jeedom Core : 4.4.10 (alpha)
DNS Jeedom : oui 
Version OS : debian 11.10
Version PHP : 7.4.33

Depuis le dernier core alpha, apparition périodique de

Erreur : [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1 : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option

Visiblement c’est suite à une modif de event.class du core

J’ai problème sur lors de l’enregistrement d’une commande pour stocker une page HTML … (il semble qu’il faille rester en dessous de 1.5 Ko avec $cmd_obj->event($value).

Une idée ? Une issue

Bonjour
Effectivement le champs est limité à 8000 caractères j’ai au maximum 16000 pour toute la ligne donc je dois pouvoir monter à 15000 je pense mais pas plus

Edit : je viens de pousser un truc qui va limiter la taille des events. Dans certain cas ca pourra poser problème mais c’est des cas extreme comme le tiens ou normalement une commande est pas faite pour stocker 1.5ko il faudrait le mettre en fichier.

Bonjour,
Finalement la limite c’est 3096 ou 1500 ?

J’ai une cmd à 1750.

La limite c’est 4095 pour tous le champs : core/install/database.json at alpha · jeedom/core (github.com).

Pour le moment je test en limitant la valeur et le display a 3096 voir si le soucis se reproduit. Si c’est le cas soit :

  • j’augmente la taille du champs a 8000 caractere
  • je limite a 1500 le display et la value
1 « J'aime »

J’ai fait un test avec une 4.4.10 avec le cache en Mysql (beta)
Ma cmd de 1720 caractères passe sans erreur.
Le champ option de la table event de cette cmd a une longueur de 3598 caractères.
La valeur du champ est composée de :

{"cmd_id":337,"value":"
   La valeur sur 1720 char
","display_value":"
  La valeur identique sur 1720 char
","unit":"","raw_unit":"","valueDate":"2024-07-25 18:18:02","collectDate":"2024-07-25 18:18:02","alertLevel":"none"}

soit 158 char d’entête et 3440 de valeur.
En arrondissant la longueur de l’entête à 205 (soit +47), pour un champ en bdd de 4095 char, la limite est 1945.

Edit: Ma cmd est la VigilanceJson du plugin meteofrance.
En changeant de localisation pour avoir les vigilances de bord de mer, la commande passe à 2060 chars et il y a l’erreur Mysql.

Ok je vais voir si je réduit la taille de l’évent ou agrandit la taille du champs en base.

L’erreur Mysql Data too long for column 'option' … se produit aussi avec le cache Fichier (beta)

Oui oui logique le type de cache n’a aucun impact sur la partie event

1 « J'aime »

Je viens de passer le champs a 8191 donc ca devrait corrigé ton soucis.

Merci beaucoup.
Je n’aurai pas à triturer les données fournies par Meteo France pour les intégrer dans Jeedom.

J’espère juste ça passera sur toute les versions différentes de Mariadb……

Bonjour à tous
Depuis le passage de la dernière version stable j’ai cette erreur mais de façon aléatoire lors de l’utilisation de la fonction event pour mettre à jour une commande.
Je stocke des tableau html dans des commandes info / autre (non historisé) pour affichage au travers de JeedomConnect.
Dans le post vous parlez de la longueur du message stocké qui est trop long mais chez moi pour un meme message cela passe qq fois et pas d’autres … y a il un autre mécanisme derrière ?

Exemple éxecution OK avec 2 messages de longueur 8018 et 62475

[2024-08-18 00:05:02][SCENARIO] -- Début : . Tags : {"force":true}
[2024-08-18 00:05:02][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-08-18 00:05:02][SCENARIO] Exécution d'un bloc code
[2024-08-18 00:05:02][SCENARIO] Start build html heat planning
[2024-08-18 00:05:02][SCENARIO] executeCommande | [Infra][mModeChauffage][Mode]
[2024-08-18 00:05:02][SCENARIO] executeCommande | [Infra][mModeChauffage][Mode]
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Sunday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning- schedule : ["00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 06 18 08 *","00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 09 18 08 *","30 10 18 08 *","00 19 18 08 *","00 09 18 08 *","30 10 18 08 *","00 19 18 08 *","00 06 18 08 *","00 18 18 08 *"]
[2024-08-18 00:05:02][SCENARIO] ChD, length -> 8018
[2024-08-18 00:05:02][SCENARIO] executeCommande | [Infra][vChauffage][htmlTabPlanningChauffageNewDay], value :xxxx
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Monday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Tuesday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Wednesday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Thursday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Friday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] getTabHtmlPlanning - Day : Saturday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:05:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:05:02][SCENARIO] ChD2, length -> 62475
[2024-08-18 00:05:02][SCENARIO] executeCommande | [Infra][vChauffage][htmlTabPlanningChauffageNewOtherDays], value :xxxxx
[2024-08-18 00:05:02][SCENARIO] 		-> schedules : [{"room":"Chambre No\u00e9","day":"Sunday","start":"2230","consign":"17.5"},{"room":"Chambre Cl\u00e9ment","day":"Sunday","start":"2230","consign":"17.5"},{"room":"Chambre damis","day":"Sunday","start":"0600","consign":"17.5"},{"room":"Chambre parents","day":"Sunday","start":"2230","consign":"17.5"},{"room":"Salle de douche","day":"Sunday","start":"1900","consign":"22"},{"room":"Salle de bain","day":"Sunday","start":"1900","consign":"22"},{"room":"Bureau","day":"Sunday","start":"1800","consign":"17"}]
[2024-08-18 00:05:02][SCENARIO] End buidl html heat planning

Exemple éxecution KO 15 minutes après pour un message de 8018 de long

Exécution d'un bloc code
[2024-08-18 00:20:02][SCENARIO] Start build html heat planning
[2024-08-18 00:20:02][SCENARIO] executeCommande | [Infra][mModeChauffage][Mode]
[2024-08-18 00:20:02][SCENARIO] executeCommande | [Infra][mModeChauffage][Mode]
[2024-08-18 00:20:02][SCENARIO] getTabHtmlPlanning - Day : Sunday | mode : confort|planning name : RoomsHeatPlanning
[2024-08-18 00:20:02][SCENARIO] getRoomPlanning/var/www/html/customConf/RoomsHeatPlanning_confort.json
[2024-08-18 00:20:02][SCENARIO] getTabHtmlPlanning- schedule : ["00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 06 18 08 *","00 09 18 08 *","30 10 18 08 *","30 22 18 08 *","00 09 18 08 *","30 10 18 08 *","00 19 18 08 *","00 09 18 08 *","30 10 18 08 *","00 19 18 08 *","00 06 18 08 *","00 18 18 08 *"]
[2024-08-18 00:20:02][SCENARIO] ChD, length -> 8018
[2024-08-18 00:20:02][SCENARIO] executeCommande | [Infra][vChauffage][htmlTabPlanningChauffageNewDay], value :xx
[2024-08-18 00:20:02][SCENARIO] 		* Erreur execution commande : [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-08-18 00:20:02][SCENARIO] sBuildHtmlTabHeatNew - erreur : [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-08-18 00:20:02][SCENARIO] Notif name : Notification
[2024-08-18 00:20:02][SCENARIO] Receiver : Notification
[2024-08-18 00:20:02][SCENARIO] Cmd notif find with equals -> [Infra][Jeeconnect Chris][Notification]
[2024-08-18 00:20:02][SCENARIO] Options : {"title":"Erreur scenario : ","message":"sBuildHtmlTabHeatNew \u2022 erreur : [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option"}
[2024-08-18 00:20:02][SCENARIO] [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option

Une idée de ce qui pose pb ?
@chris94440

Jeedom Core : 4.4.13
DNS Jeedom : non
Version OS : debian 11.8
Version PHP : 7.4.33

Bonjour,
C’est tout simplement trop long, le champs fait 8192 mais tu as pas que ta chaine de caractere dedans c’est un json avec d’autre information en gros je pense tu as environ 4000 caractere (voir 3500 ca dépend).

Merci pour ton retour
J’avais bien compris l’erreur mais ce que je comprends pas c’est pourquoi cela n’est pas systématique … Je vais revoir mes traitements.
Pourquoi avoir limiter la taille de cette colonne dans la nouvelle version ?

La nouvelle version passe la partie event d’une gestion en mode fichier a une gestion en mode base de données in memory. Pourquoi ? Pour ne pas avoir de raté, en mode fichier si ya deux event qui arrive en meme temps exactement un des 2 était perdu c’est pas de le cas en mode base de données.

Et pourquoi in memory : simplement pour aller le plus vite possible mais ca limite la taille maximal des lignes (pour pas remplir toute la mémoire), c’est une limitation mariadb.

2 « J'aime »