Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. [Aufruf] Dringender Test sql 1.6.4

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[Aufruf] Dringender Test sql 1.6.4

Scheduled Pinned Locked Moved Tester
203 Posts 15 Posters 42.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • sissiwupS Offline
    sissiwupS Offline
    sissiwup
    wrote on last edited by
    #187

    Hallo.

    immer noch Duplicate Keys:

    *   2018-02-18 14:42:19 Alarmstatus: im Haus/Lüften
    *   2018-02-18 12:26:32 Alarmstatus: OFF
    *   2018-02-15 21:41:40 Alarmstatus: Haus alles gesichert
    

    Das Ereignis wird einmal in eine Variable geschrieben (siehe manuelles Protokoll), aber:

    609_sql12.jpg

    In der Datenbank wird es 3x geschrieben:

    609_sql11.jpg

    Was mich wundert ist, das er so lange braucht, bis er in die DB Schreibt.

    Und warum er überhaupt doppelt schreibt,

    a) ist entprellen auf 1 Sekunde gesetzt.

    b) sollen nur Änderungen geschrieben werden

    609_sql13.jpg

    Wie ist denn der Ablauf des SQL-Adapters?

    Beim starten sollte er sich alle Werte für Datenpunkte + ts aus der DB holen. -> Wertecache

    Bei jeder Änderung sollte er

    Das muss Atomar sein:

    a) prüfen ob aktueller ts - Entprell-Intervall > letzter ts

    b) prüfen ob aktueller Wert <> alter Wert aus DB (bei nur Änderungen)

    c) Wenn er denn schreiben möchte, dann Cache aktualisieren

    Jetzt kann parallelisiert werden

    d) schreiben

    MfG

    Sissi

    –-----------------------------------------

    1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


    1 Reply Last reply
    0
    • apollon77A Online
      apollon77A Online
      apollon77
      wrote on last edited by
      #188

      Um die Duplicates zu verstehen bräuchte ich Debug Log bitte.

      Die genaue Logik zu beschreiben ist sehr umfangreich. Ganz grob (ohne spezielle Startlogik):

      Sämtliche Abarbeitung ist atomar weil nur ein Prozess läuft. Alles asynchrone bei JS wird am Ende auch nur sequenziell abgearbeitet.

      • Werteänderung kommt rein

      • prüfen ob je nach einstellungen geloggt werden soll oder nicht (vergleich mit letztem geloggten Wert)

      • Wenn nein, geskippten Wert intern zusätzlich sichern

      • Wenn ja, Wert sichern und diesen als Referenzwert speichern

      Wie die Duplicates zustandekommen weiss ich gerade nicht. Ich finde in deinem Screenshot nur nteressant das der timestamp in der Query und die in der Fehlermeldung unterschiedlich sind.

      Ich weiss aber das es sonderlogik für "Duplicates" gibt die das ganze mit +1ms Timestamp nochmals schreibt. Die ist schon ewig drin …

      Ingo

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #189

        @apollon77:

        Hm, wüsste nicht wie das zu „duplicate key“ führen sollte. Das ist an sich eher das zum gleichen zeitstempel schon ein wert in der dB existiert.

        Starte mal sql Adapter neu dann sollten pot Probleme vom manuellen löschen weg sein. `

        Nach einem Neustart des SQL-Adapters sind die Meldungen weg.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • sissiwupS Offline
          sissiwupS Offline
          sissiwup
          wrote on last edited by
          #190

          @apollon77:

          Um die Duplicates zu verstehen bräuchte ich Debug Log bitte

          Ingo `
          Hallo,

          Leider tritt der Fehler nur sporadisch auf und der SQL-Adapter schreibt im debug solche Massen an Logdaten, dass ich den nicht für längere Zeit aktivieren möchte.

          Es ist scheinbar meistens eine Datenpunkt der vom JavaScript-Adapter ausgelöst/geschrieben wird.

          MfG

          Sissi

          –-----------------------------------------

          1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


          1 Reply Last reply
          0
          • apollon77A Online
            apollon77A Online
            apollon77
            wrote on last edited by
            #191

            Hm … dann ist es echt schwierig dem auf die Spur zu kommen ... :-(

            Ist es immer der gleiche Datenpunkt?

            Wenn ja vllt zweite ssql-Instanz in Debug Log aufsetzen in zweite DB schreiben und nur wenige Datenpunkte dort aktivieren (die halt wo sowas passiert). Ich kann es aktuell nicht nachvollziehen. Ich brauche aber die Info was passiert wenn es das erste mal passiert

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Reply Last reply
            0
            • sissiwupS Offline
              sissiwupS Offline
              sissiwup
              wrote on last edited by
              #192

              @apollon77:

              Hm … dann ist es echt schwierig dem auf die Spur zu kommen ... :-(

              Ist es immer der gleiche Datenpunkt?

              Wenn ja vllt zweite ssql-Instanz in Debug Log aufsetzen in zweite DB schreiben und nur wenige Datenpunkte dort aktivieren (die halt wo sowas passiert). Ich kann es aktuell nicht nachvollziehen. Ich brauche aber die Info was passiert wenn es das erste mal passiert `

              War die Woche auf Dienstreise, werde das mal ausprobieren. Habe ja noch einen 2. Server der die DB schon installiert hat und vor sich hinläuft.

              MfG

              Sissi

              –-----------------------------------------

              1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


              1 Reply Last reply
              0
              • sissiwupS Offline
                sissiwupS Offline
                sissiwup
                wrote on last edited by
                #193

                609_sql14.jpg

                Wie verhext. Reload im Browser und die Daten sind da.

                Ist das vlt. ein Timeout?

                MfG

                Sissi

                –-----------------------------------------

                1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                1 Reply Last reply
                0
                • apollon77A Online
                  apollon77A Online
                  apollon77
                  wrote on last edited by
                  #194

                  welche sql.Adapter Version? Ehrlich noch die 1.6.4?

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Reply Last reply
                  0
                  • sissiwupS Offline
                    sissiwupS Offline
                    sissiwup
                    wrote on last edited by
                    #195

                    @sissiwup:

                    sql14.JPG

                    Wie verhext. Reload im Browser und die Daten sind da.

                    Ist das vlt. ein Timeout? `

                    1.7.1

                    MfG

                    Sissi

                    –-----------------------------------------

                    1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                    1 Reply Last reply
                    0
                    • apollon77A Online
                      apollon77A Online
                      apollon77
                      wrote on last edited by
                      #196

                      Hm … wann vorher neu gestartet?

                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                      1 Reply Last reply
                      0
                      • sissiwupS Offline
                        sissiwupS Offline
                        sissiwup
                        wrote on last edited by
                        #197

                        @apollon77:

                        Hm … wann vorher neu gestartet? `

                        Jede Nacht um 4:00.

                        Ist aber der erste Aufruf von vis.

                        MfG

                        Sissi

                        –-----------------------------------------

                        1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                        1 Reply Last reply
                        0
                        • sissiwupS Offline
                          sissiwupS Offline
                          sissiwup
                          wrote on last edited by
                          #198

                          Folgendes Script:

                          setState("vEreignissAkt","------------ NEUSTART ------------");
                          

                          führt beim Neustart zu:

                           error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587638, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587638' for key 'PRIMARY'
                          2018-03-17 04:16:28	
                           error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587637, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587637' for key 'PRIMARY'
                           error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587638, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587638' for key 'PRIMARY'
                           error: sql.0 Cannot insert INSERT INTO `iobroker`.ts_string (id, ts, val, ack, _from, q) VALUES(1617, 1521256587637, '------------ NEUSTART ------------', 0, 13, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1617-1521256587637' for key 'PRIMARY'
                          

                          Das sieht so aus als würde er beim Neustart das Skript 2x starten?

                          Alle anderen Datenpunkte mit den duplicates sind auch aus ähnlichen Aktion.

                          Meistens ist der Datenpunkt aus dem yr.0 Adapter: yr.0.forecast.day0.pressure

                          MfG

                          Sissi

                          –-----------------------------------------

                          1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                          1 Reply Last reply
                          0
                          • apollon77A Online
                            apollon77A Online
                            apollon77
                            wrote on last edited by
                            #199

                            Debug Log?

                            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                            1 Reply Last reply
                            0
                            • foxriver76F Offline
                              foxriver76F Offline
                              foxriver76
                              Developer
                              wrote on last edited by
                              #200

                              Habe auch mal eine Frage. Nutze den Adapter jetzt entsprechend mittels SQLite - läuft auch soweit. :) Nur beim Neustart loggt er mir haufenweise

                              Cannot queue new requests, because more than 100
                              
                              

                              Ich schätze mal, dass er den alten Status nicht mehr kennt und versucht sämtliche abonnierte DPs auf ein mal in die DB zu schreiben, was die SQLite DB überfordert? Kann ich dem irgendwie entgegenwirken?

                              beste Grüße

                              fox

                              Videotutorials & mehr

                              Hier könnt ihr mich unterstützen.

                              1 Reply Last reply
                              0
                              • apollon77A Online
                                apollon77A Online
                                apollon77
                                wrote on last edited by
                                #201

                                Ja das liegt an SQLite, Die kann immer nur eine Anfrage abarbeiten und ist daher (und auch aus anderen gründen) nur für nicht so viele Datenpunkte geeignet.

                                Und ja der Start schreibt den aktuellen Wert überall rein.

                                Du könntest mal versuchen das Limit höher zu setzen. Wenn Du das versuchen willst mach mal /opt/iobroker/node_modules/iobroker.sql/main.js in einem editor auf. und suche dort nach der Meldung. Gibts mehrfach. Ist immer so grob bei:

                                    if (!multiRequests) {
                                        if (tasks.length > 100) {
                                            adapter.log.error('Cannot queue new requests, because more than 100');
                                

                                Da musst Du das 100 mal durch was anderes tauschen, also 500 oder 1000 :-)

                                Interessant wäre da vorher/nachher mal Speicherverbrauch und sowas zu vergleichen.

                                Eine Alternative wäre noch bei SQLite dieses Initiale Schreiben zu verhindern … Denke das ist eher noch "the way to go".

                                1.7.2 vom SQL Adapter vom Github schaltet WriteNulls bei SQLite automatisch aus

                                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                1 Reply Last reply
                                0
                                • foxriver76F Offline
                                  foxriver76F Offline
                                  foxriver76
                                  Developer
                                  wrote on last edited by
                                  #202

                                  @apollon77:

                                  Du könntest mal versuchen das Limit höher zu setzen. Wenn Du das versuchen willst mach mal /opt/iobroker/node_modules/iobroker.sql/main.js in einem editor auf. und suche dort nach der Meldung. Gibts mehrfach. Ist immer so grob bei:

                                      if (!multiRequests) {
                                          if (tasks.length > 100) {
                                              adapter.log.error('Cannot queue new requests, because more than 100');
                                  

                                  Da musst Du das 100 mal durch was anderes tauschen, also 500 oder 1000 :-)

                                  Interessant wäre da vorher/nachher mal Speicherverbrauch und sowas zu vergleichen. `

                                  Ich werde es bei Gelegenheit mal versuchen, allerdings war die DB wohl teilweise auch schon überfordert beim Neustart.

                                  2018-03-24 09:48:11.319 - error: sql.0 Cannot queue new requests, because more than 100
                                  2018-03-24 09:48:11.428 - error: sql.0 Cannot select SELECT id, type, name FROM datapoints WHERE name='harmony.0.fox.activities.Anzeige-Netflix';: Error: SQLITE_BUSY: database is locked
                                  2018-03-24 09:48:11.430 - warn: sql.0 Cannot get index of "harmony.0.fox.activities.Anzeige-Netflix": Error: SQLITE_BUSY: database is locked
                                  
                                  

                                  @apollon77:

                                  Eine Alternative wäre noch bei SQLite dieses Initiale Schreiben zu verhindern … Denke das ist eher noch "the way to go". `

                                  Das habe ich jetzt erst mal so gemacht. Danke - war mir nicht sicher ob ich das mit den NULL-Werten bei Start/Stop schreiben richtig interpretiert hatte. :D

                                  Videotutorials & mehr

                                  Hier könnt ihr mich unterstützen.

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    SabineT
                                    wrote on last edited by
                                    #203

                                    @apollon77:

                                    Ich weiss aber das es sonderlogik für "Duplicates" gibt die das ganze mit +1ms Timestamp nochmals schreibt. Die ist schon ewig drin … `
                                    Die Werte doppelt in die Datenbank zu schreiben ist aber auch nicht wirklich sehr Resourcen schonend.

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    652

                                    Online

                                    32.7k

                                    Users

                                    82.4k

                                    Topics

                                    1.3m

                                    Posts
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Home
                                    • Recent
                                    • Tags
                                    • Unread 0
                                    • Categories
                                    • Unreplied
                                    • Popular
                                    • GitHub
                                    • Docu
                                    • Hilfe