[gelöst] configDB - Beim Speichern einer Änderung erscheint Fehlermeldung

Begonnen von Trenton, 01 September 2019, 22:42:16

Vorheriges Thema - Nächstes Thema

Trenton

Hallo zusammen,

ich habe schon seit April auf ConfigDB migriert, das lief auch alles fehlerfrei. Allerdings war mein System zum damaligen Zeitpunkt schon vollständig konfiguriert, so dass ich das Speichern von Änderungen nicht ausprobiert habe.

Jetzt wollte ich ein wenig weiter an meiner Konfiguration schrauben und erhalte beim Speichern ständig die Meldung "Connection Lost..."

Die Änderung wird nicht in der Datenbank gespeichert.
Die Verbindung zur Datenbank steht, die Konfiguration wird beim Neustart des Systems fehlerfrei eingelesen.

Eine manuelle testweise Änderung in der Datenbank beim alias eines Devices wurde nach Neustart von FHEM ebenfalls sofort umgesetzt.

Lt. Logfile vermute ich den Fehler in dieser Meldung. Leider reichen meine Programmierkenntnisse nicht aus, um dem entgegen zu wirken.

2019.09.01 21:16:31 1: PERL WARNING: DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 712.
DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 712.
2019.09.01 21:16:31 1: PERL WARNING: Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle database=fhem;host=localhost;port=3306 at configDB.pm line 712.


Version der configDB.pm ist
# $Id: configDB.pm 19514 2019-06-01 07:50:09Z betateilchen $

Ich habe jetzt nach besten Wissen jetzt nochmal die Installation von ConfigDB geprüft, ein Update von FHEM durchgeführt und viele Beiträge hier im Forum durchgelesen. Leider habe ich bisher keine Lösung gefunden.

Ich hoffe auf euren fachkundigen Rat. Vielen Dank!

Gruß
Sascha
RASPI 3b+ / FHEM

Geplante Automatisierung mit ansprechender Visualisierung einzelner Readings
Projekt erneut angefangen am 01.03.2019

Trenton

Hat denn wirklich so gar keiner einen Tipp dafür?

Wollte eine komplette Neueinrichtung umgehen.

Gruß
Sascha
RASPI 3b+ / FHEM

Geplante Automatisierung mit ansprechender Visualisierung einzelner Readings
Projekt erneut angefangen am 01.03.2019

betateilchen

Der Fehler kommt nicht aus der Datenbank oder dem configDB Modul.

Es wird versucht, in die Tabelle fhemconfig zu schreiben, dabei müssen 6 Werte in 6 Spalten geschrieben werden. Aber die Anzahl der übergebenen Werte passt nicht zur Anzahl der Spalten.

Vermutung: es werden zu wenige Werte an das insert() übergeben - warum das so ist, kann ich Dir nicht sagen. Ich tippe auf einen Fehler in Deiner bestehenden FHEM Konfiguration selbst.

Zitat von: Trenton am 01 September 2019, 22:42:16
Eine manuelle testweise Änderung in der Datenbank

ts ts ts... und da hoffst Du wirklich noch auf viel Support?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Kommando zurück. Gib mir mal eine Stunde Zeit, ich will was testen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ok, das Problem ist hoffentlich gelöst.

Entweder Du verwendest diese neue Version: https://svn.fhem.de/trac/export/HEAD/trunk/fhem/configDB.pm oder Du wartest bis zum morgigen Update, dann kommt diese Datei automatisch.

Damit sollte das Speichern auch bei Dir wieder funktionieren. Über eine Rückmeldung Deines Tests hier im Thread würde ich mich freuen.

Was mich allerdings wundert: warum ist das noch nicht bei anderen Usern aufgetreten?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Trenton

Hallo betateilchen,

danke für deine Rückmeldung.

Ich habe die configDB.pm  unter opt/fhem/ eingefügt und die bestehende Datei überschrieben. Leider besteht bei mir das Problem weiterhin, lediglich die Zeilennummer hat sich verschoben.

Ich habe dabei versucht von einem Gerät den Alias zu ändern, hier das Ergebnis:
(Nachtrag jetzt mit Verbose 5 zum korrekten Logging der einzutragenen Daten)

2019.09.07 13:40:56 5: configDB Debug - c:attr d:global p1:userattr p2:DbLogExclude DbLogInclude DbLogValueFn:textField-long cmdIcon devStateIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride l:0 u:xxxxxxxxxxxxxxxxxxxxxxxxxx (aus Sicherheitsgründen entfernt)
2019.09.07 13:40:56 1: PERL WARNING: DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 714.
DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 714.
2019.09.07 13:40:56 1: PERL WARNING: Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle database=fhem;host=localhost;port=3306 at configDB.pm line 714.


Auch ich habe vermutet, das nicht alle notwendigen Argumente übergeben werden, ich kann mir nur nicht erklären wieso?
Ich habe lediglich die FHEM.cfg nach der offiziellen Anleitung migriert. Es wurden keinerlei Datenbankänderungen vorgenommen.

Zitatts ts ts... und da hoffst Du wirklich noch auf viel Support?
Bevor hier ein Missverständnis auftritt. Ich habe lediglich den INHALT der Alias für ein Gerät testweise geändert um zu sehen, ob überhaupt der Verbindungaufbau zur Datenbank überhaupt stattfindet.
Ich habe weder die Datenbankstruktur noch irgendwas an den Dateien geändert.

Gibt es noch eine Chance, um die Neueinrichtung herumzukommen ?

Gruß
Sascha
RASPI 3b+ / FHEM

Geplante Automatisierung mit ansprechender Visualisierung einzelner Readings
Projekt erneut angefangen am 01.03.2019

betateilchen

Zitat von: Trenton am 07 September 2019, 13:25:23
Gibt es noch eine Chance, um die Neueinrichtung herumzukommen ?

Wieso glaubst Du, dass eine Neueinrichtung das Problem lösen würde?

Lösche mal bitte das globale Attribut userattr und versuche dann zu speichern.

deleteattr global userattr
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Falls das nicht funktioniert, kontrolliere mal bitte das Schema der Tabelle fhemconfig.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Trenton

ZitatLösche mal bitte das globale Attribut userattr und versuche dann zu speichern.

Leider weiterhin der gleiche Fehler. Er entfernt das gelöschte attr nicht in der Datenbank. Eine manuelle Entfernung in der Datenbank nach vorherigem Backup erzeugt weiterhin die gleiche Fehlermeldung, dann halt mit der nächsten Zeile der Config:

2019.09.07 14:42:37 5: configDB Debug - c:attr d:global p1:autoload_undefined_devices p2:1 l:0 u:(aus Sicherheitsgründen entfernt)
2019.09.07 14:42:37 1: PERL WARNING: DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 714.
DBD::mysql::st execute failed: Column count doesn't match value count at row 1 at configDB.pm line 714.
2019.09.07 14:42:37 1: PERL WARNING: Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle database=fhem;host=localhost;port=3306 at configDB.pm line 714.


Also ich sehe da folgerichtig 6 Argumente, die in die Tabelle fhemconfig geschrieben werden sollen. Die Argumente haben einen Inhalt, die Anzahl sollte ebenfalls passen.

Das Tabellenschema von fhemconfig habe ich als Bild angehängt.

ZitatWieso glaubst Du, dass eine Neueinrichtung das Problem lösen würde?
Ich gehe davon aus, dass ich im schlimmsten Fall halt FHEM komplett neu aufzusetzen ist. Ich hoffe darauf, dass der Fehler dann behoben ist. Ist nicht mein Wunsch, aber eine andere Idee habe ich sonst nicht.

Denn wie du richtig bemerkt hast, bin ich scheinbar der einzige User, der diese Fehlermeldung hatte bzw. sich dazu gemeldet hat. Also scheint an meiner Gesamtkonfig ja irgendwas anders zu sein. Das übersteigt allerdings meine Möglichkeiten als Einsteiger in FHEM, um das zu prüfen.

*** Nachtrag: Nachdem ich nochmals versucht habe deine Datei zu verstehen ist mir aufgefallen, das nur 6 Spalten angelegt werden. Woher die Spalte Timestamp kommt und wieso sie angelegt wurde ist mir schleierhaft. Nach vorherigem Backup habe ich die Spalte entfernt.

Config DB funktioniert einwandfrei, es wird in der Datenbank abgespeichert und die Verbindung geht nicht mehr verloren. ***

Danke für die Unterstützung, Problem ist gelöst.

Gruß
Sascha
RASPI 3b+ / FHEM

Geplante Automatisierung mit ansprechender Visualisierung einzelner Readings
Projekt erneut angefangen am 01.03.2019

betateilchen

Hast Du die Datenbank manuell angelegt? Woher kommt eigentlich das 7. Feld "Timestamp"?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Trenton

Zitat von: betateilchen am 07 September 2019, 15:28:41
Hast Du die Datenbank manuell angelegt? Woher kommt eigentlich das 7. Feld "Timestamp"?

Wie im Nachtrag geschrieben, habe ich keine Ahnung woher dieses zusätzliche Feld kommt. Das Löschen der Spalte hat das Problem behoben, da jetzt die 6 Argumente ausreichend sind.
Fällt wohl unter Benutzerfehler, auf jeden Fall vielen Dank für den Schubs in die richtige Richtung.

Gruß
Sascha

RASPI 3b+ / FHEM

Geplante Automatisierung mit ansprechender Visualisierung einzelner Readings
Projekt erneut angefangen am 01.03.2019

betateilchen

Zitat von: Trenton am 07 September 2019, 15:34:55
Wie im Nachtrag geschrieben,

Solche nachträgliche Bearbeitungen von Beiträgen in einer laufenden Diskussion bekommt man nicht automatisch mit. Deshalb ist es meistens besser, einen solchen Nachtrag in einen eigenen Beitrag zu schreiben.

Hauptsache, es funktioniert nun wieder.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!