Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Database Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sisamiwe
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Wie kommst Du darauf?
    Zumindest lese ich das so aus dem Code aus der Methode "def remove_older_than_maxage(self):"
    Zeile 1489:
    Code:
    if not self._db.connected():
    --> das ist die "Produktivverbindung"
    Zeile 1575:
    Code:
    cur = self._db.cursor()
    --> das ist die "Produktivverbindung"

    wohingegen die Methode "def _delete_orphan(self, item_path):"
    Zeile 966:
    Code:
    cur = self._db_maint.cursor()
    die Maintenance-Verbindung nutzt

    Oder lese ich das falsch?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wie kommst Du darauf?

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Wegen dieser Beschränkung von MySQL wird von den Maintenance Routinen extra eine zweite Connection aufgemacht, damit sie nicht mit der normalen Funktion des Plugins kollidieren.
    Danke dir.

    Das hatte ich schon so verstanden, daher wundert es mich, dass die Methode "remove_older_than_maxage" nicht diese zweite Connection nutzt?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Der Fehler mit der falschen Sequence Nummer tritt auf, wenn in einer Connection mehrere Cursors gleichzeitig aktiv sind. MySQL unterstützt nur einen Curso je Connection. Im database Plugin selbt ist sichergestellt, dass nur ein Cursor je Connection aktiv ist. Wegen dieser Beschränkung von MySQL wird von den Maintenance Routinen extra eine zweite Connection aufgemacht, damit sie nicht mit der normalen Funktion des Plugins kollidieren. Das wurde nachträglich eingebaut, denn mit SQlite3 besteht diese Einschränkung nicht.

    Einen Kommentar schreiben:


  • Sisamiwe
    antwortet
    Hallo,
    melde mich mal mit einem Hilfegesuch!

    Seit geraumer Zeit tritt bei der Anwendnung des database-Plugins in Version 1.6.9 in Verbindung mit einer MariaDB sporadisch Fehler, die dann auch zum Verlust der Datenbankanbindung führen.
    Hier mal ein exemplarisches Log:

    Code:
    2023-04-12  15:13:27 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:13:27 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:13:27 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:13:33 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:19:04 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:19:04 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:19:04 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:23:36 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:23:36 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:23:36 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
    2023-04-12  15:23:36 WARNING  lib.db                                   Database [Database]: Connection error (0, '')
    2023-04-12  15:27:12 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:27:12 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:27:12 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
    2023-04-12  15:27:12 WARNING  lib.db                                   Database [Database]: Connection error (0, '')
    2023-04-12  15:27:19 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:31:43 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:31:43 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:31:43 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:34:49 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:34:50 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:34:50 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:37:57 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:37:57 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:37:57 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:38:01 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:42:46 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:42:46 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:42:46 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:47:04 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:47:05 WARNING  lib.db                                   Database [Database]: Connection error Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:47:05 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:50:11 ERROR    lib.db                                   Can not execute query: SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = %(id)s; (args OrderedDict([('id', 'raumtemp.og.bad.luftfeuchtigkeit.taupunkt')])): Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:50:11 ERROR    plugins.database                         Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = raumtemp.og.bad.luftfeuchtigkeit.taupunkt;: Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:50:11 WARNING  plugins.database                         id(): No id found for item raumtemp.og.bad.luftfeuchtigkeit.taupunkt - Exception Packet sequence number wrong - got 1 expected 2
    2023-04-12  15:50:11 ERROR    lib.db                                   Can not execute query: SELECT MAX(id) FROM item; (args OrderedDict()): (0, '')
    2023-04-12  15:50:11 ERROR    plugins.database                         Database: Error for query SELECT MAX(id) FROM item;: (0, '')
    2023-04-12  15:50:11 WARNING  plugins.database                         Problem dumping raumtemp.og.bad.luftfeuchtigkeit.taupunkt: (0, '')
    2023-04-12  15:50:11 WARNING  plugins.database                         Error rolling back: (0, '')
    2023-04-12  15:50:11 ERROR    lib.db                                   Can not execute query: SELECT 1 (args OrderedDict()): (0, '')
    2023-04-12  15:50:11 WARNING  lib.db                                   Database [Database]: Connection error (0, '')
    2023-04-12  15:50:11 WARNING  lib.db                                   fetchone: No cursor defined for stmt SELECT 1 with params ()
    2023-04-12  15:50:15 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:51:47 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:53:18 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:54:50 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:56:22 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:57:54 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  15:59:25 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:00:57 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:02:29 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:04:01 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:05:32 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:07:04 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:08:36 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:10:08 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:11:39 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:13:11 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:14:43 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:16:15 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:17:46 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:19:18 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:20:50 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected
    2023-04-12  16:22:22 WARNING  plugins.database                         remove_older_than_maxage skipped because db is not connected​
    Der Fehler tritt adhoc auf, zumindest konnte ich bislang keinen Zusammenhang finden. Manchmal "heilt" es sich selbst, meinst wird aber die Verbindung zu Datenbank verloren und somit werden auch keine Daten mehr geschrieben.
    Schlussendlich muss ich shNG neu starten, damit es wieder funktioniert.

    Meine Fragen:
    A) Lässt sich das Plugin erweitern, so dass einer eine verlorenen/korrupten Verbindung zu Datenbank diese neu aufgebaut wird? Das Plugin "merkt" ja, dass die Datenbankverbindung nicht mehr existiert? Würde es dabei reichen, die Verbindungen zur Datenbank zu schließen "'close()" und danach "_initialize_db()" aufzurufen?

    B) Wie ich verstanden habe, kann pro Verbindung zu DB nur ein Cursor verwendet werden. Dies ist auch der Grund dafür, dass das Plugin für die Maintenance Aufgaben eine zweite Verbindung ("_db_maint") hat. Warum wird aber "remove_older_than_maxage" die produktive Datenbankverbindung ("_db") genutzt?

    Wer kann mir hinweise geben?

    Vielen Dank und beste Grüße
    Michael

    Einen Kommentar schreiben:


  • ooUrmeloo
    antwortet
    bin leider jetzt erst dazu gekommen ...
    Aber danke!! Funktioniert wieder!

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Ziehst du dir bitte mal die aktuellste develop Version von shng und probierst nochmals? Bei meinen Tests hat alles wie gewünscht/erwartet funktioniert.. Im db Plugin kommt man auch nach Öffnen eines Items und Zurückkehren zur Übersicht wieder auf die Seite, die zuvor aktiv war... und man sollte jetzt problemlos zwischen den versch. Page Lengths umschalten können. Im Übrigen kann man sowohl im http Modul als auch im Plugin mit dem Parameter webif_pagelength bestimmen, was default angezeigt werden soll. -1 wäre "alle"

    Einen Kommentar schreiben:


  • ooUrmeloo
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Hast du die neueste shng Version im Einsatz?
    ja, habe V1.9.4 am Laufen.
    Ich habe aber gerade eben zufällig festgestellt, dass es irgendwie auch vom Browser / OS abhängt.
    Unter Windows + Firefox wie oben beschrieben. Unter Android + Chrome habe ich scheinbar eher das gegenteilige Verhalten. Da zeigt es (immer) alles an.

    Nachtrag: gerade doch nochmal schnell versucht. Am PC verhält sich bei mir Firefox, Chrome und Edge gleich. Wie gesagt, auf dem Smartphone geht's - mehr oder weniger.
    Zuletzt geändert von ooUrmeloo; 26.03.2023, 20:38.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Hast du die neueste shng Version im Einsatz?
    Kann das aber leider auch mit der aktuellen Version nachvollziehen - das ist ein Bug, keine Ahnung woher der kommt. Schau ich mir an.
    Dass er nach Klick auf das Lupensymbol und Zurückkehren auf "Übersicht" wieder auf Seite 1 ankommt, ist mehr oder weniger Absicht bzw. normal. Auch das muss ich mir mal ansehen, sollte lösbar sein.

    Einen Kommentar schreiben:


  • ooUrmeloo
    antwortet
    Hallo zusammen,

    nach dem Umstieg auf Database Plugin 1.6.9 gibt es bei mir im WebIF jetzt die Möglichkeit mit "Show xx Entries" die Anzahl der Einträge pro Seite darzustellen.
    (Ich weiß ehrlich gesagt nicht, ab welcher Version die Funktion drin ist ... vorher hatte ich das nicht.)
    Bei mir funktioniert das aber irgendwie nicht. Ich sehe immer nur 25 Einträge. Wenn ich im Browser zoome, sehe ich sogar weniger (aber nie mehr als 25).
    Wenn ich die Einstellung "Show xx Entries" ändere, ändert sich nichts, egal ob 25, 50, 100, alle ...
    Ist ein bisschen nervig, wenn man immer auf Seite 17 muss o.ä.. Außerdem springt er immer wieder auf die erste Seite wenn ich in einem DB Eintrag war und nicht an die Stelle zurück, wo ich war ... auch etwas unschön.
    Mach ich was falsch? Oder ist das so gewollt? Kann ich irgendwie wieder auf eine lange Liste zum Scrollen umsteigen?

    Danke und Gruß,
    Timo

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Die Funktion funktioniert zumindest bei mir problemlos. Die Funktion löscht im Hintergrund die Datensätze. Da ei lässt sich das Plugin bewusst Zeit, damit es die Performance der normalen Funktion (wegschreiben von Daten, Nutzung des Webinterface) nicht behindert.
    Macht Sinn (oder kurz Msinn -> jetzt weiß ich auch woher der Name kommt). ;-)

    Zitat von Msinn Beitrag anzeigen
    Die Hinweise, dass die Datenbank gesperrt ist, lassen darauf schließen, dass es bei Dir noch anders geartete gleichzeitige Zugriffe gibt. Das könnte aus einem sqlite3 Admin Tool kommen oder auch aus anderen SmartHomeNG Plugins welche selbst auf die Datenbank zugreifen oder Funktionen des Database Plugins nutzen, da diese in anderen Threads laufen als das database Plugin.
    Nur noch das db_addon. Das habe ich jetzt testhalber mal pausiert. Schauen wir mal, wie es da weiter geht. Aber der "Müll" scheint nicht zu verschwinden.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Die Funktion funktioniert zumindest bei mir problemlos. Die Funktion löscht im Hintergrund die Datensätze. Da ei lässt sich das Plugin bewusst Zeit, damit es die Performance der normalen Funktion (wegschreiben von Daten, Nutzung des Webinterface) nicht behindert.

    Die Hinweise, dass die Datenbank gesperrt ist, lassen darauf schließen, dass es bei Dir noch anders geartete gleichzeitige Zugriffe gibt. Das könnte aus einem sqlite3 Admin Tool kommen oder auch aus anderen SmartHomeNG Plugins welche selbst auf die Datenbank zugreifen oder Funktionen des Database Plugins nutzen, da diese in anderen Threads laufen als das database Plugin.
    Zuletzt geändert von Msinn; 22.03.2023, 10:58.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Msinn Beitrag anzeigen
    Was verstehst Du unter "Datenbank-Cleanup"? Meinst Du das Löschen verwaister Items?
    Genau dafür gibt es unter "Verwaiste Items" im Web-Interface einen extra Button: "Datenbank-Cleanup starten".

    Ich denke die Funktion "Datenbank-Cleanup" führt eher zu Problemen, denn ich habe dann eine ganze Weile, zeitversetzt nach dem drücken des Buttons mit Datenbankfehlern zu tun. Das ist nur ein kurzer Auszug des Logs:

    Code:
    2023-03-22  03:53:57 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  03:53:57 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  04:24:17 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  04:24:17 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  04:36:27 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  04:36:27 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  04:47:37 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  04:47:37 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  05:21:03 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  05:21:03 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  05:36:16 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  05:36:16 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  05:39:19 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3;: database is locked
    2023-03-22  05:39:19 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3 - Exception database is locked
    2023-03-22  05:39:24 ERROR    plugins.database    Database: Error for query SELECT MAX(id) FROM item;: database is locked
    2023-03-22  05:39:24 WARNING  plugins.database    Problem dumping Zentral.Energie.Verbrauch.Wirkleistung_L1_L2_L3: database is locked
    2023-03-22  05:39:29 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L1;: database is locked
    2023-03-22  05:39:29 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L1 - Exception database is locked
    2023-03-22  05:39:34 ERROR    plugins.database    Database: Error for query SELECT MAX(id) FROM item;: database is locked
    2023-03-22  05:39:34 WARNING  plugins.database    Problem dumping Zentral.Energie.Verbrauch.Wirkleistung_L1: database is locked
    2023-03-22  05:39:39 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L2;: database is locked
    2023-03-22  05:39:39 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L2 - Exception database is locked
    2023-03-22  05:39:44 ERROR    plugins.database    Database: Error for query SELECT MAX(id) FROM item;: database is locked
    2023-03-22  05:39:44 WARNING  plugins.database    Problem dumping Zentral.Energie.Verbrauch.Wirkleistung_L2: database is locked
    2023-03-22  05:39:49 ERROR    plugins.database    Database: Error for query SELECT id, name, time, val_str, val_num, val_bool, changed from item WHERE name = Zentral.Energie.Verbrauch.Wirkleistung_L3;: database is locked
    2023-03-22  05:39:49 WARNING  plugins.database    id(): No id found for item Zentral.Energie.Verbrauch.Wirkleistung_L3 - Exception database is locked
    2023-03-22  05:39:54 ERROR    plugins.database    Database: Error for query SELECT MAX(id) FROM item;: database is locked
    2023-03-22  05:39:54 WARNING  plugins.database    Problem dumping Zentral.Energie.Verbrauch.Wirkleistung_L3: database is locked​

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Was verstehst Du unter "Datenbank-Cleanup"? Meinst Du das Löschen verwaister Items?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Nach dem Update auf die aktuelle Version database v1.6.9, habe ich mal ein Datenbank-Cleanup durchführen lassen, damit nicht verwendete Items rausgeschmissen werden. Der Cleanup wird aber nicht durchgeführt. DIe Einträge werden nicht gelöscht.

    Einen Kommentar schreiben:

Lädt...
X