EIBD plante - Error code : 23000 (1452)

Bonjour,

J’utilise EIBD depuis un moment maintenant, mon jeedom (version 3.3.39) est installé sous docker sur syno.

Depuis quelques mois, j’ai 2 problèmes auxquels je ne trouve pas réponse malgré mes recherches sur le net, les forums & Co…

1. EIBD plante en boucle
Régulièrement, juste après minuit (max 00h01), EIBD plante en boucle avec l’erreur suivante :
Erreur sur eibd::BusMonitor() : [MySQL] Error code : 23000 (1452). Cannot add or update a child row: a foreign key constraint fails (jeedom.history, CONSTRAINT fk_history_cmd1 FOREIGN KEY (cmd_id) REFERENCES cmd (id) ON DELETE CASCADE ON UPDATE CASCADE) : REPLACE INTO history SET cmd_id=:cmd_id, datetime=:datetime, value=:value
Le démon ne redémarre plus. J’ai beau relancer les dépendances, changé la config (interface de com en manuel avec adresse 127.0.0.1 et port 6720 au lieu de IPTN avec adresse 192.168.6.29:3671 normalement), redémarrer jeedom ou encore le syno, rien n’y fait… Le seule méthode qui fonctionne est de charger une sauvegarde d’avant le bug… Qui finit toujours par revenir, tôt ou tard…

2. Démarrage en mode sapin de Noël
Après toute mise à jour (EIBD ou autre), tous mes équipements semblent être vérifiés (beaucoup d’activité quand je check le temps réel).
Mais ma maison devient hantée ! Les volets se ferment, des lumières clignotent, le chauffage se réinitialise et se coupe complètement… Certaines lumières s’allument et le restent. Certains scénarios semblent se lancer, ceux sur interrupteur il me semble.
Ca arrive parfois la nuit… La lumière devant la chambre qui reste allumée, c’est sympa, ma femme apprécie de plus en plus la domotique… :disappointed:
Je devrai peut-être créer un autre sujet mais j’ai l’impression que c’est lié également à EIBD… Redites moi si jamais.

J’ai déjà beaucoup cherché sur les forums, je ne sais plus quoi faire et n’ose plus toucher à mon système… Please, HELP !

Très étrange ce problème.
Vous n’avez pas de backup avant le problème ?

Bonjour Mika !
Malheureusement non, le problème 1 existe sur mon système depuis des mois et est aléatoire… Il peut s’écouler plusieurs jours avec tout qui fonctionne et d’un coup, je découvre que c’est planté un matin. Toujours la même heure, minuit…
Le problème 2 est plus récent, quelques semaines, j’ai pensé a une mise à jour intégrant une initialisation ? J’ai des erreurs READ et pas de réponse à chaque fois.

Tu es sur eibd ou knxd

J’ai toujours été sur Eibd mais j’ai testé knxd sans succès.
J’avais vu, sur un autre sujet, le fait de repasser en manuel puis de revenir sur Eibd mais ça ne marche pas non plus.
Parfois, ça se rétablit tout seul, a minuit le jour suivant… Le démon repart, je ne sais pas comment…

En tout cas l’erreur souligné n’est pas un erreur du plugin mais de la database
Je pense que tu as nettoyer les id pour le poste.
Cette id est il toujours le même ou changent il ?
Ce n’est pas une erreur que j’ai déjà vue et
Je ne vois pas trop le lien avec le démon

Êtes vous sur une carte sd ?

Le message est toujours le même, sans spécifier d’ID particulier.
Comment nettoyer les ID ?
Je suis sur syno avec docker, ma base de données est sur phpMyAdmin (avec Mariadb 10), pas de carte sd donc.
Merci de ton aide en tout cas.

Hello !

Voilà, mise à jour s’est faite à minuit (on n’était devant la TV, les lumières se sont mises à clignoter, la TV s’est éteinte…) ; je ne sais pas ce qui déclenche ce phénomène.
Le démon est reparti, check des adresses, toujours les mêmes qui n’ont pas de réponse :

Mes scénarios sur inter, donc avec GAD, ont également été lancés. Finalement, c’est peut-être eux qui font clignoter les lumières et descendre les volets.

Niveau sauvegarde, j’en ai une sur docker qui date de 2017. Tellement travaillé depuis sur Jeedom, ça reviendrait presque à tout refaire… J’espère qu’une solution se présente.

Ce qui est certain c’est que ton problème n’est pas vraiment sur le plugin mais sur l’écriture en base.
Peut-être que @Loic aurait une idée sur cette erreur mysql

La je vois pas trop car normalement plus de contrainte sur la bdd jeedom…il faut les désactiver la, mais j’ai plus la commande

Sur jeedom v4 ou v3 aussi

Sur toute les versions

Bonjour,

Merci pour ces échanges. Je suis sur Jeedom V3 si jamais.
Le démon s’est à nouveau planté cette nuit…
J’ai testé d’autres choses :

  • j’ai une passerelle Zennio KNX-IP autorisant 5 connexions seulement, mon installateur a suggéré de kill les connexions (reset passerelle) = redémarrage du KNX au tableau <=> toujours pareil

  • j’ai changé le type de passerelle dans le plugin en IPT (ald IPTN), le démon démarre bien mais aucune réponse du bus (tous mes équipements passent en revue et indiquent tous cette erreur)

Si ça peut aider, voici le log du plugin, le problème semble bien venir de la BD :

Bref, avec le mode « sapin de Noël » lors des mises à jour, ça semble mal barrer pour conserver mon jeedom actuel…
Y aurait-il une méthode pour reset la BD et éventuellement repartir sur du propre ?

Merci encore en tout cas !

Voila la requete :
SET FOREIGN_KEY_CHECKS=0;

Normalement ca devrait tout désactiver. Test aussi le systeme de verification de la DB voir si tout est ok

A lancer sur Configuration/_OS/DB dans la partie Administration de la bdd c’est ça ?

Testé ! Ca m’a donné ça :

En vérifiant la base de donnée, tout est ok :

Démon relancé, jeedom redémarré et pourtant, cette erreur apparait toujours… :dizzy_face:

Ben je sais pas c’est bizarre la en gros c’est tu veux enregistrer un historique d’une commande qui n’existe pas mais je comprends pas d’où ça vient

Tu vois ça comment ?
C’est une erreur d’enregistrement passée ?

Non non c’est MTN il veut enregistrer un historique d’une commande qui existe pas

Excuse-moi, je ne suis pas très calé, j’imagine que c’est la commande que tu m’as fait lancer qui aurait du rien rendre ? Je la retenterai quand le service sera de retour pour comprendre.

Du coup, ça craint un peu j’ai l’impression…

Essayes de faire

SELECT concat('alter table ',table_schema,'.',table_name,' DROP FOREIGN KEY ',constraint_name,';')
FROM information_schema.table_constraints
WHERE constraint_type='FOREIGN KEY'
AND table_schema='jeedom';

Ça va te donner les requêtes a faire pour supprimer toute les contraintes