Erreur sql 22001

oui c’est exactement l’usage que j’en fait, je test un plugin qui a mis la grouille dans mes commandes, maintenant, plus de crainte, les virtuels importants sont sauvegardés

merci encore pour ton travail et pour avoir fait la modif demandée :slight_smile:

pour info, sur une restauration j’ai cette erreur :

0 State_Capturer Erreur exécution de la commande [Plugin Physique][Capture EtatSystemes][ACTUEL] : [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

Pour moi jamais très clair le report des erreur sql, à priori une donnée trop longue, mais faut vraiment y aller, doit y avoir un autre truc

1/ est ce que tu peux mettre en debug et reporter le log de la restauration [edit : lorsque l’erreur se produit]?
2/ est ce que tu n’as pas un caractère alakon dans les données que tu sauvegarde? type @, $, & ou autre
3/ s’il n’a y a pas d’info confidentielle dans la sauvegarde de l’état, est ce que tu peux partager le json qui est ds /plugins/State_Capturer/data/ qui est nommé STATE_iddelacommandeetat.json ? et peut être la configuration du virtuel que tu sauvegarde.

[edit] note sur la table history :

donc value à une valeur max de 127 octets (si je ne me goure pas trop)
Y’a peut être un pb avec la sauvegarde ou la restitution ds le pllugin

Si un modo passe dans le coin, est ce que vous pouvez séparer la discussion avec le poste de Nemeraud au dessus, j’aimerai explorer l’erreur à part! mci! (@Fabrice @Salvialf pour ne citer qu’eux ;D) [edit merci les modos]

[Edit]

J’ai essayé en mettant tous les caractères spéciaux que j’ai pu imaginer sur mon clavier (en alphabet standard Fr!), et je ne reproduit que si je passe une longue chaine sur la variable,

Mais là encore, j’ai d’abord l’erreur lors de la valorisation de l’info initiale (avant la sauvegarde par le plugin), et je la retrouve quand je reload le state.

=> l’hypothèse là est que tu as peut être un texte bien long, qui est accepté dans l’info du virtuel, qui doit aller assez loin. De mémoire pour les configuration des commande et eqlogic on peux aller à 65ko, je crois que c’est un type text, qui rentre donc dans la base pour l’info, mais pas dans la table d’historisation…

1 « J'aime »

Merci pour ta réponse, voici le fichier json

{"60":{"3901":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"18553":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"10687":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"536":{"activated":"1","state":"Activation Nuit : 19\/01\/2022 \u00e0 22:24","type":"string","force_update":"0","cmd":[]},"12795":{"activated":"1","state":"Tous les capteurs sont OK, activation de l'alarme Nuit (Total) : 19\/01\/2022 \u00e0 22:25","type":"string","force_update":"0","cmd":[]},"4231":{"activated":"1","state":1642618817,"type":"numeric","force_update":"0","cmd":[]},"3885":{"activated":"1","state":"Armement TOTAL : 19\/01\/2022 \u00e0 14:45","type":"string","force_update":"0","cmd":[]},"10689":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"18555":{"activated":"1","state":"Armement TOTAL : 19\/01\/2022 \u00e0 14:45","type":"string","force_update":"0","cmd":[]},"18557":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"3878":{"activated":"1","state":"Alerte mouvement NUIT (2) : 18","type":"string","force_update":"0","cmd":[]},"4229":{"activated":"1","state":"OK : 19\/01\/2022 \u00e0 19:59","type":"string","force_update":"0","cmd":[]},"10972":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"10975":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"10693":{"activated":"1","state":"OK : 18\/01\/2022 \u00e0 06:42","type":"string","force_update":"0","cmd":[]},"4698":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"15309":{"activated":"1","state":"Antoine : CHAUFFAGEVANNESALON Vanne Salon : CHGCONSIGNE (17.5\u00b0) : 19\/01\/2022 \u00e0 22:09","type":"string","force_update":"0","cmd":[]},"15301":{"activated":"1","state":"Antoine : MODE THERMOSTATS Les thermostats ne sont pas dans le m\u00eame mode : 1\nSalon=\u00c9co - Normal\nChb=Alternance autre thermostat - Normal : 19\/01\/2022 \u00e0 16:36","type":"string","force_update":"0","cmd":[]},"15999":{"activated":"1","state":"SCENARIO Lancement du scenario Sauvegarde STATCAPTURER : Commande=schedule, d\u00e9clencheur=schedule\/0, valeur=\/ : 19\/01\/2022 \u00e0 22:59","type":"string","force_update":"0","cmd":[]},"14174":{"activated":"1","state":"Tablette:Alarme NUIT maintenant arm\u00e9e, ne plus ouvrir la porte d'entr\u00e9e, les baies ou les portes du garage (30%) : 19\/01\/2022 \u00e0 22:24","type":"string","force_update":"0","cmd":[]},"13411":{"activated":"1","state":"0","type":"string","force_update":"0","cmd":[]},"15038":{"activated":"1","state":"Un visage inconnu a \u00e9t\u00e9 d\u00e9tect\u00e9 par la Welcome : 17\/01\/2022 \u00e0 12:50","type":"string","force_update":"0","cmd":[]},"3272":{"activated":"1","state":"<b>Mouvement<\/b> d\u00e9tect\u00e9","type":"string","force_update":"0","cmd":[]},"16127":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"16128":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"16129":{"activated":"1","state":"","type":"string","force_update":"0","cmd":[]},"21812":{"activated":"1","state":"SCENARIO Lancement du scenario Sauvegarde STATCAPTURER : Commande=schedule, d\u00e9clencheur=schedule\/0, valeur=\/","type":"string","force_update":"0","cmd":[]},"21813":{"activated":"1","state":"SCENARIO Lancement du scenario Sauvegarde STATCAPTURER : Commande=schedule, d\u00e9clencheur=schedule\/0, valeur=\/","type":"string","force_update":"0","cmd":[]},"21814":{"activated":"1","state":"DEBUG : Nouveau : SCENARIO Lancement du scenario Sauvegarde STATCAPTURER : Commande=schedule, d\u00e9clencheur=schedule\/0, valeur=\/  - Pr\u00e9c\u00e9dent : SCENARIO Lancement du scenario Alerte TabletteDebranche : Commande=other, d\u00e9clencheur=other\/0, valeur=\/","type":"string","force_update":"0","cmd":[]}}}

j’ai voulu te fournit un log alors j’ai refais un SAV + RESTORE et forcement plus l’erreur…

alors pas sur que le problème soit encore présent dans le json, je SAV tous les soirs

l’information qui posait soucie ne doit plus être présente pour le moment :frowning:

EDIT : tu pourras me prévenir quand les ajoutes du mode SAUVEGARDE seront poussées en Stable, faudra que je repasse sur cette version

Merci Nemeraud!

Tu as plusieurs info >127 caractères, non exhaustif :
14 147
15 301
21 814
… et probablement quelques autres.

Est ce qu’elle sont historisées?

Normalement tu n’as pas de limite avec le plugin state capture sur la longueur des chaines que tu peux sauver, ni restaurer par ailleurs, et il ne travaille pas avec la base de données (justement pour s’affranchir de pb de longueur de chaine).

donc à la sauvegarde pas de souci.
A la restauration, si la valeur est identique (testé en ‹ == ›, pas stricte ‹ === ›), il n’y aura pas de mise à jour (les cases « force update » étant décochées), mais si différentes alors la valeurs sera mise à jour

Si la commande est historisée, tu aura l’erreur sur la mise en historique pour les commandes dont la valeur > 127 caractères. Note : tu n’a pas l’erreur quand tu enregistre la commande info (dans un scénario ou je ne sais ou, mais en dehors du plugin state capturer)?

Pour tester, tu peux cocher « force update » sur les commandes, → envoyer la restauration → erreur
si pas trop important, décocher l’historisation des commandes concernées → lancer restauration → plus d’erreur (normalement!!)

J’ai 2/3 pb de traduction à régler avant de passer en stable, je posterai ici dès que je le fais monter!

14147->14174 = Tablette:[ALARME NUIT %mode%] Maintenant désarmée (50%) : 20/01/2022 à 06:34
15301 = Antoine : JEEDOM Mise à jour à faire : e nouvelles mises à jour sont disponibles : 20/01/2022 à 07:49

oui ce sont des messages de log, pourquoi non exhaustif ?

la 14174 est historisé mais pas le 15301

aucune erreur lors des sauvegardes

je vais voir si l’erreur se reproduit, je cocherais « forcer » dans ce cas

merci beaucoup

parce que je n’ai pas vérifié toutes les info :wink:

Comment est ce que tu valorise la 14174 par exemple ? je compte 194 caractères, du coup je suis surpris que tu n’ai pas d’erreur à ce moment là
Et tu retrouve bien la valeur dans l’historique?

[Edit] J’ai testé d’enregister sur une commande historisée la valeur :

" Tablette:[ALARME NUIT %mode%] Maintenant désarmée (50%) : 20/01/2022 à 06:34
15301 = Antoine : JEEDOM Mise à jour à faire : e nouvelles mises à jour sont disponibles : 20/01/2022 à 07:49"

via la commande event dans un scénario :

je me retrouve avec un erreur dans le log

------------------------------------
[2022-01-20 11:58:55][SCENARIO] Start : Scenario lance manuellement.
[2022-01-20 11:58:55][SCENARIO] Exécution du sous-élément de type [action] : action
[2022-01-20 11:58:55][SCENARIO] [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
[2022-01-20 11:58:55][SCENARIO] Fin correcte du scénario

la valeur est bien renseignée dans le virtuel, mais rien dans history

select * from history where cmd_id = '462' order by datetime desc
mes sort :
|cmd_id|datetime|value|

| --- | --- | --- |
|462|2022-01-20 12:05:50|rabougri ù*^$ùµ%µµ¨£¨:;;:?.?1234567890°+)àç_è-('"é|
|462|2022-01-20 12:05:37|12|

(ni dans historyArch : select * from historyArch where cmd_id = ‹ 462 › order by datetime desc)

Pas plus d’erreur dans le centre des message ceci dit, c’est assez discret si tu ne vas pas voir dans le log du scenario.

Salut Nemeraud,

Montée en stable, avec les trads!

1 « J'aime »

Merci, sympa, bon weekend

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