Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. SQL.Adpter: Insert-Befehle innerhalb von 40ms

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    481

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

SQL.Adpter: Insert-Befehle innerhalb von 40ms

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
64 Beiträge 6 Kommentatoren 4.9k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • haus-automatisierungH haus-automatisierung

    @nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

    ob es dem IOBroker , bzw dem NPM schadet, wenn ich das mysql package installiere:

    Pakete werden auf die Art lokal im aktuellen Verzeichnis installiert (node_modules). Das heißt, dass Du das bitte nicht in /opt/iobroker/... packst, sondern irgendwo in deinem Home-Verzeichnis o.ä. Dann hat das mit dem ioBroker nix zu tun.

    PS: Dein Script bekommt eventuell ein Problem, wenn end() ausgeführt wird, bevor der query geantwortet hat.

    N Offline
    N Offline
    nettekov
    schrieb am zuletzt editiert von
    #36

    @haus-automatisierung Status--> Ich habe im Homeverzeichnis unter einem Ordner Test das mysql-Package installiert und die erste SELECT Query funktionieren auch schon.
    Werden am WE ein bisschen testen.

    Macht es vielleicht Sinn, das ich ein Paar angeblichen fehlbehaftete Query zu schicke und ihr die bei Euch testet. So können wir vielleicht herausfinden, ob es ein generelles Problem handelt oder nur bei meine IT hier ein Problem existiert.

    Bei den Tabelle ts_number & ts_counter kann man ja eine ID eingeben, die in der Tabelle data points nicht existieren und somit später wieder entfernen

    Gruss nettekov

    OliverIOO 1 Antwort Letzte Antwort
    0
    • N nettekov

      @haus-automatisierung Status--> Ich habe im Homeverzeichnis unter einem Ordner Test das mysql-Package installiert und die erste SELECT Query funktionieren auch schon.
      Werden am WE ein bisschen testen.

      Macht es vielleicht Sinn, das ich ein Paar angeblichen fehlbehaftete Query zu schicke und ihr die bei Euch testet. So können wir vielleicht herausfinden, ob es ein generelles Problem handelt oder nur bei meine IT hier ein Problem existiert.

      Bei den Tabelle ts_number & ts_counter kann man ja eine ID eingeben, die in der Tabelle data points nicht existieren und somit später wieder entfernen

      Gruss nettekov

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #37

      @nettekov
      es liegt ziemlich sicher an deiner installation/konfiguration.
      ansonsten würden sich hier viele ähnliche Meldungen im Forum befinden, da du ja da nix so spezielles machst, wie viele anderen auch.

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      haus-automatisierungH 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @nettekov
        es liegt ziemlich sicher an deiner installation/konfiguration.
        ansonsten würden sich hier viele ähnliche Meldungen im Forum befinden, da du ja da nix so spezielles machst, wie viele anderen auch.

        haus-automatisierungH Offline
        haus-automatisierungH Offline
        haus-automatisierung
        Developer Most Active
        schrieb am zuletzt editiert von
        #38

        @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

        es liegt ziemlich sicher an deiner installation/konfiguration.

        Das denke ich auch. Wobei es ja eigentlich nicht an MariaDB liegen kann - die Version nutzen ja auch viele auf der Synology und da wird ja auch für alle das gleiche Paket ausgerollt.

        Bleibt eigentlich nur Adapter + Adapter-Konfiguration + Abhängigkeiten + nodejs Version. Macht es natürlich nicht leichter, dass einige Datenpunkte funktionieren.

        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
        📚 Meine inoffizielle ioBroker Dokumentation

        OliverIOO 1 Antwort Letzte Antwort
        0
        • haus-automatisierungH haus-automatisierung

          @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

          es liegt ziemlich sicher an deiner installation/konfiguration.

          Das denke ich auch. Wobei es ja eigentlich nicht an MariaDB liegen kann - die Version nutzen ja auch viele auf der Synology und da wird ja auch für alle das gleiche Paket ausgerollt.

          Bleibt eigentlich nur Adapter + Adapter-Konfiguration + Abhängigkeiten + nodejs Version. Macht es natürlich nicht leichter, dass einige Datenpunkte funktionieren.

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          schrieb am zuletzt editiert von
          #39

          @haus-automatisierung
          tja wenn wir nur wüssten, was tatsächlich bei der datenbank ankommt. das wissen wir leider ja immer noch nicht.
          aktuell wissen wir nur was vermeintlich abgesendet worden ist, bzw. eine fehlermeldung der datenbank, bei der der befehl gekürzt wurde

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          1 Antwort Letzte Antwort
          1
          • OliverIOO OliverIO

            @nettekov

            ok, also der db meldet nicht den kompletten fehler.
            jetzt noch was bei der db tatsächlich ankommt.

            das kann man über das general query log aktivieren.
            da werden dann alle query requests reingeschrieben.
            https://mariadb.com/kb/en/general-query-log/

            die befehle kannst du entweder über den client auf dem rechner ausführen (auf der shell mysql eingeben, auch wenn du mariadb verwendest)
            oder auch aus heidisql.
            da genau so eingeben wie die normalen queries.

            falls du mehr konfigurieren willst, dann kannst du es auch in der normalen
            konfig datei /etc/mysql/my.cnf machen

            weiterhin kannst du auch mal das error log von mariadb/mysql anschauen oder erweitern. aber da dürfte nix anderes drin stehen.
            ich denke, der befehl der wirklich ankommt ist erst mal interessant
            https://mariadb.com/kb/en/error-log/

            haus-automatisierungH Offline
            haus-automatisierungH Offline
            haus-automatisierung
            Developer Most Active
            schrieb am zuletzt editiert von
            #40

            @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

            tja wenn wir nur wüssten, was tatsächlich bei der datenbank ankommt. das wissen wir leider ja immer noch nicht.

            Dein Kommentar wurde ja auch erfolgreich ignoriert :) Hier nochmal die Wiederholung:

            @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

            ok, also der db meldet nicht den kompletten fehler.
            jetzt noch was bei der db tatsächlich ankommt.
            das kann man über das general query log aktivieren.
            da werden dann alle query requests reingeschrieben.
            https://mariadb.com/kb/en/general-query-log/

            Und hier findet man auf der Synology die Config: https://kb.synology.com/en-in/DSM/tutorial/Can_MariaDB_settings_be_customized_on_Synology_NAS

            🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
            🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
            📚 Meine inoffizielle ioBroker Dokumentation

            N 1 Antwort Letzte Antwort
            0
            • haus-automatisierungH haus-automatisierung

              @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

              tja wenn wir nur wüssten, was tatsächlich bei der datenbank ankommt. das wissen wir leider ja immer noch nicht.

              Dein Kommentar wurde ja auch erfolgreich ignoriert :) Hier nochmal die Wiederholung:

              @oliverio sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

              ok, also der db meldet nicht den kompletten fehler.
              jetzt noch was bei der db tatsächlich ankommt.
              das kann man über das general query log aktivieren.
              da werden dann alle query requests reingeschrieben.
              https://mariadb.com/kb/en/general-query-log/

              Und hier findet man auf der Synology die Config: https://kb.synology.com/en-in/DSM/tutorial/Can_MariaDB_settings_be_customized_on_Synology_NAS

              N Offline
              N Offline
              nettekov
              schrieb am zuletzt editiert von nettekov
              #41

              Hallo Leute,

              ich habe euch nicht vergessen oder ignorier. ich kann z.Z. halt nicht jeden Tag hier weitermachen.
              Für mich ist die Situation auch nicht leicht und könnte meine Zeit besser verwenden.
              Aber ich finde , das ist ein geiles Forum, der mir von zwei Probleme gelöst hat und möchte gerne auch mal was zurückgeben, was ich denke das ich das auch kann.
              Daher bitte ich euch , um etwas Geduld.
              Wir werden das schaffen!

              @OliverIO : Deinen Ratschlag werde noch beflogen, ich hatte mitte der Woche schon mal mit Wireshark ein Versuche aufgezeichnet.

              1. Ein fehlerhafte Protokoll vom SQL.Adapter zum MySQL -Server:
                Hier sieht man , das trotz vollständig übertragen INSERT-Befehl, der MySQL-Server eine Syntax-Fehlermeldung ausgibt.
                Insert-Befehl_SQL-Adapter_ZUM_MYSQL_Server.png

              2. Dann bin ich hingegangen und haben diesen Befehl kopiert und in einem anderen SQL-Client ausgeführt und wieder mit Wireshark aufgezeichnet.
                Hier ist der selber INSERT-Befehl durchgegangen und es gab keine Fehler:
                90768a0b-192a-4534-a0ad-7a96d933663a-image.png

              Soo. die mariadb und die mysqldb werden jetzt auch geloggt.
              Hier sind schon die ersten Ergebnisse:
              logmariab.png

              Ich versuche morgen mal bescheid zu geben, was das Ergebnis ist.

              Gruss Nettekov

              OliverIOO 1 Antwort Letzte Antwort
              0
              • N nettekov

                Hallo Leute,

                ich habe euch nicht vergessen oder ignorier. ich kann z.Z. halt nicht jeden Tag hier weitermachen.
                Für mich ist die Situation auch nicht leicht und könnte meine Zeit besser verwenden.
                Aber ich finde , das ist ein geiles Forum, der mir von zwei Probleme gelöst hat und möchte gerne auch mal was zurückgeben, was ich denke das ich das auch kann.
                Daher bitte ich euch , um etwas Geduld.
                Wir werden das schaffen!

                @OliverIO : Deinen Ratschlag werde noch beflogen, ich hatte mitte der Woche schon mal mit Wireshark ein Versuche aufgezeichnet.

                1. Ein fehlerhafte Protokoll vom SQL.Adapter zum MySQL -Server:
                  Hier sieht man , das trotz vollständig übertragen INSERT-Befehl, der MySQL-Server eine Syntax-Fehlermeldung ausgibt.
                  Insert-Befehl_SQL-Adapter_ZUM_MYSQL_Server.png

                2. Dann bin ich hingegangen und haben diesen Befehl kopiert und in einem anderen SQL-Client ausgeführt und wieder mit Wireshark aufgezeichnet.
                  Hier ist der selber INSERT-Befehl durchgegangen und es gab keine Fehler:
                  90768a0b-192a-4534-a0ad-7a96d933663a-image.png

                Soo. die mariadb und die mysqldb werden jetzt auch geloggt.
                Hier sind schon die ersten Ergebnisse:
                logmariab.png

                Ich versuche morgen mal bescheid zu geben, was das Ergebnis ist.

                Gruss Nettekov

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von
                #42

                @nettekov

                setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
                nutze lieber ersteinmal die Möglichkeiten der DB

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                N 3 Antworten Letzte Antwort
                0
                • OliverIOO OliverIO

                  @nettekov

                  setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
                  nutze lieber ersteinmal die Möglichkeiten der DB

                  N Offline
                  N Offline
                  nettekov
                  schrieb am zuletzt editiert von nettekov
                  #43

                  @oliverio Anbei die erste Fehlermeldung:
                  iobroker_log.png
                  und das entsprechende Log: (Die 3 Quittungen kommen von den 3 oberen Queries)
                  quit_sql_ada.png
                  Logfiel_2023_02_10.png

                  Der INSERT-Befehl kommt sauber an.

                  Und jetzt den selben INSERT-Befehl nochmal über einen anderen SQL-Client geschickt, dann ist alles OK:
                  Selbe_INSERT_ÜBER 172_27_200_100.png

                  Gruss Nettekov

                  1 Antwort Letzte Antwort
                  0
                  • OliverIOO OliverIO

                    @nettekov

                    setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
                    nutze lieber ersteinmal die Möglichkeiten der DB

                    N Offline
                    N Offline
                    nettekov
                    schrieb am zuletzt editiert von nettekov
                    #44

                    @oliverio Da gebe ich dir Recht, aber Wireshark war schneller aufzubauen

                    1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @nettekov

                      setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
                      nutze lieber ersteinmal die Möglichkeiten der DB

                      N Offline
                      N Offline
                      nettekov
                      schrieb am zuletzt editiert von nettekov
                      #45

                      @oliverio said in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

                      setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
                      nutze lieber ersteinmal die Möglichkeiten der DB

                      Da gebe ich dir Recht, aber Wireshark war schneller aufzubauen

                      1 Antwort Letzte Antwort
                      0
                      • OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von
                        #46

                        @nettekov

                        ok also auch hier sehen die sqls gut aus.
                        dann noch das db error log prüfen

                        https://mariadb.com/kb/en/error-log/

                        also ich sehe da kein syntax error
                        und wenn du die über den client ausführst geht es ja auch.
                        aber warum meldet die db dann einen syntax error?
                        auch die möglichkeit eines eines zeichens, welches im log oder sonst nicht richtig sichtbar ist kann man ausschließen, da es ja nur zahlen sind die da enthalten sind.

                        kannst du da mal die kompatibilitäts einstellungen prüfen ob da was besonderes ist?
                        https://mariadb.com/kb/en/sql-mode/
                        nicht das er da durch eine einstellung doch nicht das mehrfache insert kennt.

                        als workaround könntest du auch den counter deaktivieren, wenn du ihn nicht wirklich brauchst.

                        findest du irgendwo in den logs inserts, bei denen das insert mit mehreren values funktioniert und keinen fehler erzeugt?

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        N 1 Antwort Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @nettekov

                          ok also auch hier sehen die sqls gut aus.
                          dann noch das db error log prüfen

                          https://mariadb.com/kb/en/error-log/

                          also ich sehe da kein syntax error
                          und wenn du die über den client ausführst geht es ja auch.
                          aber warum meldet die db dann einen syntax error?
                          auch die möglichkeit eines eines zeichens, welches im log oder sonst nicht richtig sichtbar ist kann man ausschließen, da es ja nur zahlen sind die da enthalten sind.

                          kannst du da mal die kompatibilitäts einstellungen prüfen ob da was besonderes ist?
                          https://mariadb.com/kb/en/sql-mode/
                          nicht das er da durch eine einstellung doch nicht das mehrfache insert kennt.

                          als workaround könntest du auch den counter deaktivieren, wenn du ihn nicht wirklich brauchst.

                          findest du irgendwo in den logs inserts, bei denen das insert mit mehreren values funktioniert und keinen fehler erzeugt?

                          N Offline
                          N Offline
                          nettekov
                          schrieb am zuletzt editiert von
                          #47

                          @oliverio
                          anbei die SQL-Mode:

                          STRICT_TRANS_TABLES,
                          ERROR_FOR_DIVISION_BY_ZERO,
                          NO_AUTO_CREATE_USER,
                          NO_ENGINE_SUBSTITUTION
                          

                          Ich glaube nicht das es die DB-Server sind, bzw. erstmals nicht, obwohl es eigentlich Wahrscheinlicher ist, bzw. sonst wäre draußen viel mehr Probleme. Da gehe ich auf jeden fall mit
                          Aber sowohl der MariaDB Server auf der Synology , als auch der MySql auf meinem lokalen PC haben die selben Problematiken und in beiden Fällen stimmt die Syntax (sowohl in den Logs , als auch in Wireshark), bzw wenn ich Sie separat über eine anderen SQL-Client schicke , gehen Diese Durch.

                          1 Antwort Letzte Antwort
                          0
                          • N Offline
                            N Offline
                            nettekov
                            schrieb am zuletzt editiert von nettekov
                            #48

                            Hallo zusammen,

                            bevor ich weitermachen, wollte ich kurz nochmal die Version checken, nicht das wir doch durch einer veralten Version nach eine Problem suchen, was eigentlich nicht gibt, bzw. ggf. schon durch eine neuere Version gelöst ist.

                            IObroker-Adapter:
                            version1.png

                            SQL-Adapter mit zweiter Version v1.16.1:
                            version2.png

                            IOBroker node:
                            version 3.png

                            MariaDB auf Synology-NAS:
                            version4.png

                            MySQL Server auf lokalen PC(Nur zur Testzwecken: ist veralte von XAMPP, kann ich aber ggf aktualisieren)
                            version5.png

                            Sollte ich eine wichtige Version vergessen haben, sagt kurz Bescheid.

                            Gruss Nettekov

                            Marc BergM 1 Antwort Letzte Antwort
                            0
                            • N Offline
                              N Offline
                              nettekov
                              schrieb am zuletzt editiert von nettekov
                              #49

                              @haus-automatisierung
                              @OliverIO

                              Hallo zusammen,

                              ich glaube ich habe was gefunden.

                              Das Problem bei mir, das manch ein Insert Befehl von SQL-Server als Syntax-Error angemahnt wird, ist, wenn mehrere Insert-Befehle
                              in einer Transaktion gepackt und weggeschickt werden.
                              Schickt man jeden INSERT-Befehl in einer separaten Transaktion, dann werden Diese dann auch vom SQL-Server akzeptiert, auch wenn ich die Datensätze auf 8 erhöhe.
                              Wenn zwei oder mehrere Insert-Anweisung in einer Transaktion über das node-Module 'mysql' geschickt werden, dann wird anscheinend (und das ganz vorsichtig gesagt) das Protokoll nicht so eingestellt, das es für mehrere SQL-Statements nicht geeignet ist.(Dies ist aber nur eine Mutmaßung).
                              Schickt man die selben angemahnten SQL-Sequenzen unverändert über eine anderen SQL-Client, dann wird die komplette SQL-Sequenz auch in einer Transaktion an den SQL-Server geschickt und Diese werden dann akzeptiert.
                              Bei myphpadmin wird die SQl-Sequenz teilweise gesplittet in mehreren Transaktionen,
                              Bei Heidi-SQL werden Diese generell in einzelne Transaktionen gesplittet.

                              Aber nochmal, das habe ich erstmal nur bei mir festgestellt.

                              ich würde jetzt versuchen, hierfür eine JS-Funktion zu schreiben, damit das Datenloggen bei mir wieder lauffähig wird.
                              Kann sein , das ich da ggf. Euch nochmal was fragen muss.

                              Gruss nettekov

                              Hier die Protokolle:
                              Angemahntes SQL-Sequenz im IOBroker-Log:
                              test1.png

                              Cannot insert INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (5, 1676135872618, 53.32),(5, 1676138387812, 53),(5, 1676138387812, 53),(5, 1676138670902, 52.95);INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676138387812, 53, 1, 2, 0),(5, 1676138670902, 52.95, 1, 2, 0);: Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676...' at line 1 (id: LUFTFEUCHTE@William_Martin)
                              

                              Inhalt von SQL_TEST2.js (kopiertes angemahntes SQL-Sequenz vom IOBroker-Protokoll):

                              ar mysql      = require('mysql');
                              var connection = mysql.createConnection({
                                host     : '172.27.110.30',
                                user     : 'iobroker',
                                password : '*********',
                                database : 'iobroker',
                                port     : 3307
                              });
                              
                              
                              connection.connect(function(err) {
                                if (err) throw err;
                                console.log("Connected!");
                                var sql = " INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (5, 1676135872618, 53.32),(5, 1676138387812, 53),(5, 1676138387812, 53),(5, 1676138670902, 52.95);INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676138387812, 53, 1, 2, 0),(5, 1676138670902, 52.95, 1, 2, 0);";
                                connection.query(sql, function (err, result) {
                                  if (err) throw err;
                                  console.log("1 record inserted");
                                });
                              });
                              

                              Ergebnis von node SQL_TEST2.js--> Transaktion wird erwartender Weise angemahnt

                              root@server03:~/test$ node SQL_TEST2.js
                              Connected!
                              /home/root/test/node_modules/mysql/lib/protocol/Parser.js:437
                                    throw err; // Rethrow non-MySQL errors
                                    ^
                              
                              Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676...' at line 1
                                  at Query.Sequence._packetToError (/home/root/test/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
                                  at Query.ErrorPacket (/home/root/test/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
                                  at Protocol._parsePacket (/home/root/test/node_modules/mysql/lib/protocol/Protocol.js:291:23)
                                  at Parser._parsePacket (/home/root/test/node_modules/mysql/lib/protocol/Parser.js:433:10)
                                  at Parser.write (/home/root/test/node_modules/mysql/lib/protocol/Parser.js:43:10)
                                  at Protocol.write (/home/root/test/node_modules/mysql/lib/protocol/Protocol.js:38:16)
                                  at Socket.<anonymous> (/home/root/test/node_modules/mysql/lib/Connection.js:88:28)
                                  at Socket.<anonymous> (/home/root/test/node_modules/mysql/lib/Connection.js:526:10)
                                  at Socket.emit (events.js:400:28)
                                  at addChunk (internal/streams/readable.js:293:12)
                                  --------------------
                                  at Protocol._enqueue (/home/root/test/node_modules/mysql/lib/protocol/Protocol.js:144:48)
                                  at Connection.query (/home/root/test/node_modules/mysql/lib/Connection.js:198:25)
                                  at Handshake.<anonymous> (/home/root/test/SQL_TEST2.js:15:14)
                                  at Handshake.<anonymous> (/home/root/test/node_modules/mysql/lib/Connection.js:526:10)
                                  at Handshake._callback (/home/root/test/node_modules/mysql/lib/Connection.js:488:16)
                                  at Handshake.Sequence.end (/home/root/test/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
                                  at Handshake.Sequence.OkPacket (/home/root/test/node_modules/mysql/lib/protocol/sequences/Sequence.js:92:8)
                                  at Protocol._parsePacket (/home/root/test/node_modules/mysql/lib/protocol/Protocol.js:291:23)
                                  at Parser._parsePacket (/home/root/test/node_modules/mysql/lib/protocol/Parser.js:433:10)
                                  at Parser.write (/home/root/test/node_modules/mysql/lib/protocol/Parser.js:43:10) {
                                code: 'ER_PARSE_ERROR',
                                errno: 1064,
                                sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676...' at line 1",
                                sqlState: '42000',
                                index: 0,
                                sql: ' INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (5, 1676135872618, 53.32),(5, 1676138387812, 53),(5, 1676138387812, 53),(5, 1676138670902, 52.95);INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676138387812, 53, 1, 2, 0),(5, 1676138670902, 52.95, 1, 2, 0);'
                              }
                              

                              Inhalt von SQL_TEST5.js (kopiertes angemahntes SQL-Sequenz wird in zwei Transaktionen aufgeteilt):

                              var mysql      = require('mysql');
                              var connection = mysql.createConnection({
                                host     : '172.27.110.30',
                                user     : 'iobroker',
                                password : '***************',
                                database : 'iobroker',
                                port     : 3307
                              });
                              
                              
                              connection.connect(function(err) {
                                if (err) throw err;
                                console.log("Connected!");
                                var sql1 = " INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (5, 1676135872618, 53.32),(5, 1676138387812, 53),(5, 1676138387812, 53),(5, 1676138670902, 52.95)";
                                connection.query(sql1, function (err, result) {
                                  if (err) throw err;
                                  console.log("1 record inserted");
                                });
                                  var sql2 = "INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (5, 1676138387812, 53, 1, 2, 0),(5, 1676138670902, 52.95, 1, 2, 0);";
                                connection.query(sql2, function (err, result) {
                                  if (err) throw err;
                                  console.log("1 record inserted");
                                });
                              });
                              
                              

                              Ergebnis von node SQL_TEST5.js--> Transaktion wird akzeptiert

                              root@server03:~/test$ vi SQL_TEST5.js
                              root@server03:~/test$ node SQL_TEST5.js
                              Connected!
                              1 record inserted
                              1 record inserted
                              

                              Inhalt von SQL_TEST6.js (kopiertes angemahntes SQL-Sequenz wird in zwei Transaktionen aufgeteilt und jeder INSERT-Befehl wurden die Datensätze auf acht erhöht):

                              var mysql      = require('mysql');
                              var connection = mysql.createConnection({
                                host     : '172.27.110.30',
                                user     : 'iobroker',
                                password : '*****************',
                                database : 'iobroker',
                                port     : 3307
                              });
                              
                              
                              connection.connect(function(err) {
                                if (err) throw err;
                                console.log("Connected!");
                                var sql1 = " INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (1235, 1676135872618, 53.32),(1235, 1676138387812, 53),(1235, 1676138387812, 53),(1235, 1676138670902, 52.95),(1236, 1676135872618, 53.32),(1236, 1676138387812, 53),(1236, 1676138387812, 53),(1235, 1676138670902, 52.95);";
                                connection.query(sql1, function (err, result) {
                                  if (err) throw err;
                                  console.log("1 record inserted");
                                });
                                  var sql2 = "INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (1235, 1676138387812, 53, 1, 2, 0),(1235, 1676138670902, 52.95, 1, 2, 0),(1236, 1676138387812, 53, 1, 2, 0),(1236, 1676138670902, 52.95, 1, 2, 0),(1237, 1676138387812, 53, 1, 2, 0),(1237, 1676138670902, 52.95, 1, 2, 0),(1238, 1676138387812, 53, 1, 2, 0),(1238, 1676138670902, 52.95, 1, 2, 0);";
                                connection.query(sql2, function (err, result) {
                                  if (err) throw err;
                                  console.log("1 record inserted");
                                });
                              });
                              

                              Ergebnis von node SQL_TEST6.js--> Transaktionen werden akzeptiert

                              root@server03:~/test$ vi SQL_TEST6.js
                              root@server03:~/test$ node SQL_TEST6.js
                              Connected!
                              1 record inserted
                              1 record inserted
                              

                              Angemahntes SQL-Sequenz im IOBroker-Log:
                              test3.png

                              	Cannot insert INSERT INTO `iobroker`.ts_counter (id, ts, val) VALUES (47, 1676131245941, 8.04),(47, 1676133519887, 7.82);INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (47, 1676133519887, 7.82, 1, 2, 0),(47, 1676133530714, 7.87, 1, 2, 0);: Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO `iobroker`.ts_number (id, ts, val, ack, _from, q) VALUES (47, 167...' at line 1 (id: TEMPERATUR@AussenHaustuer)
                              

                              Ergebnis über anderen SQL-Client--> Transaktion wird akzeptiert
                              mobile.png
                              test4.png

                              1 Antwort Letzte Antwort
                              0
                              • N Offline
                                N Offline
                                nettekov
                                schrieb am zuletzt editiert von
                                #50

                                @OliverIO
                                Hallo OliverIO,

                                In der main.js werden mit dieser Funktion die Datenlogs gesendet?

                                function _insertValueIntoDB(query, id, cb) {
                                    adapter.log.debug(query);
                                
                                    borrowClientFromPool((err, client) => {
                                        if (err) {
                                            returnClientToPool(client);
                                            adapter.log.error(err);
                                            cb && cb(); // BF asked (2021.12.14): may be return here err?
                                        } else {
                                            client.execute(query, (err /* , rows, fields */) => {
                                                returnClientToPool(client);
                                                if (err) {
                                                    adapter.log.error(`Cannot insert ${query}: ${err} (id: ${id})`);
                                                } else {
                                                    checkRetention(id);
                                                }
                                                cb && cb(); // BF asked (2021.12.14): may be return here err?
                                            });
                                        }
                                    });
                                }
                                

                                Gruss Nettekov

                                OliverIOO 1 Antwort Letzte Antwort
                                0
                                • N nettekov

                                  Hallo zusammen,

                                  bevor ich weitermachen, wollte ich kurz nochmal die Version checken, nicht das wir doch durch einer veralten Version nach eine Problem suchen, was eigentlich nicht gibt, bzw. ggf. schon durch eine neuere Version gelöst ist.

                                  IObroker-Adapter:
                                  version1.png

                                  SQL-Adapter mit zweiter Version v1.16.1:
                                  version2.png

                                  IOBroker node:
                                  version 3.png

                                  MariaDB auf Synology-NAS:
                                  version4.png

                                  MySQL Server auf lokalen PC(Nur zur Testzwecken: ist veralte von XAMPP, kann ich aber ggf aktualisieren)
                                  version5.png

                                  Sollte ich eine wichtige Version vergessen haben, sagt kurz Bescheid.

                                  Gruss Nettekov

                                  Marc BergM Offline
                                  Marc BergM Offline
                                  Marc Berg
                                  Most Active
                                  schrieb am zuletzt editiert von Marc Berg
                                  #51

                                  @nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

                                  SQL-Adapter mit zweiter Version v1.16.1:
                                  version2.png

                                  IOBroker node:
                                  version 3.png

                                  So, wie es aussieht hast du es ja hier mit irgendwelchen Inkompatibilitäten zu tun. Darum verstehe ich nicht, warum nicht erstmal dieser Schiefstand der Adapter-Version sowie ein Update der Node Version angegangen wird?
                                  An deiner Stelle würde ich den Adapter löschen und neu installieren sowie Node.js auf die empfohlene Version (16) bringen.

                                  NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                                  Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                                  Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                                  N 1 Antwort Letzte Antwort
                                  0
                                  • Marc BergM Marc Berg

                                    @nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

                                    SQL-Adapter mit zweiter Version v1.16.1:
                                    version2.png

                                    IOBroker node:
                                    version 3.png

                                    So, wie es aussieht hast du es ja hier mit irgendwelchen Inkompatibilitäten zu tun. Darum verstehe ich nicht, warum nicht erstmal dieser Schiefstand der Adapter-Version sowie ein Update der Node Version angegangen wird?
                                    An deiner Stelle würde ich den Adapter löschen und neu installieren sowie Node.js auf die empfohlene Version (16) bringen.

                                    N Offline
                                    N Offline
                                    nettekov
                                    schrieb am zuletzt editiert von
                                    #52

                                    @marc-berg Vielen dank für deine Antwort.

                                    Weiß Du , wofür die V1.16.1 steht.
                                    Bevor ich den SQL-Adapter , deinstalliere und wieder installiere, sollten wir erst wissen, wofür Diese Version steht.

                                    Marc BergM 1 Antwort Letzte Antwort
                                    0
                                    • N Offline
                                      N Offline
                                      nettekov
                                      schrieb am zuletzt editiert von
                                      #53

                                      Hallo zusammen,

                                      ich habe in die '_insertValueIntoDB' Funktion einfach mal ein Log-Befehl eingebaut, der bei jedem Daten-Loggen das Query anzeigt.

                                      function _insertValueIntoDB(query, id, cb) {
                                          adapter.log.debug(query);
                                      
                                          borrowClientFromPool((err, client) => {
                                              if (err) {
                                                  returnClientToPool(client);
                                                  adapter.log.error(err);
                                                  cb && cb(); // BF asked (2021.12.14): may be return here err?
                                              } else {
                                                  client.execute(query, (err /* , rows, fields */) => {
                                                      returnClientToPool(client);
                                      
                                                      adapter.log.error(`Hallo Welt --> ${query}`); // Nettekov
                                                      
                                                     if (err) {
                                                          adapter.log.error(`Cannot insert ${query}: ${err} (id: ${id})`);
                                                      } else {
                                                          checkRetention(id);
                                                      }
                                                      cb && cb(); // BF asked (2021.12.14): may be return here err?
                                                  });
                                              }
                                          });
                                      }
                                      
                                      

                                      Wenn man jetzt im Protokollbereich von IOBroker nachschauen, sieht man , da die meine Datenlog' in der SQL-Transaktion nur ein SQl-Statement haben.
                                      Wenn zwei SQL-Statements in einer Transaktion auftauchen, dann kommt auch der Syntax-Error.

                                      iolog.png

                                      Gruss nettekov

                                      haus-automatisierungH 1 Antwort Letzte Antwort
                                      0
                                      • N nettekov

                                        Hallo zusammen,

                                        ich habe in die '_insertValueIntoDB' Funktion einfach mal ein Log-Befehl eingebaut, der bei jedem Daten-Loggen das Query anzeigt.

                                        function _insertValueIntoDB(query, id, cb) {
                                            adapter.log.debug(query);
                                        
                                            borrowClientFromPool((err, client) => {
                                                if (err) {
                                                    returnClientToPool(client);
                                                    adapter.log.error(err);
                                                    cb && cb(); // BF asked (2021.12.14): may be return here err?
                                                } else {
                                                    client.execute(query, (err /* , rows, fields */) => {
                                                        returnClientToPool(client);
                                        
                                                        adapter.log.error(`Hallo Welt --> ${query}`); // Nettekov
                                                        
                                                       if (err) {
                                                            adapter.log.error(`Cannot insert ${query}: ${err} (id: ${id})`);
                                                        } else {
                                                            checkRetention(id);
                                                        }
                                                        cb && cb(); // BF asked (2021.12.14): may be return here err?
                                                    });
                                                }
                                            });
                                        }
                                        
                                        

                                        Wenn man jetzt im Protokollbereich von IOBroker nachschauen, sieht man , da die meine Datenlog' in der SQL-Transaktion nur ein SQl-Statement haben.
                                        Wenn zwei SQL-Statements in einer Transaktion auftauchen, dann kommt auch der Syntax-Error.

                                        iolog.png

                                        Gruss nettekov

                                        haus-automatisierungH Offline
                                        haus-automatisierungH Offline
                                        haus-automatisierung
                                        Developer Most Active
                                        schrieb am zuletzt editiert von
                                        #54

                                        @nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

                                        Wenn zwei SQL-Statements in einer Transaktion auftauchen, dann kommt auch der Syntax-Error.

                                        Eventuell kann @apollon77 was dazu sagen?

                                        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                        📚 Meine inoffizielle ioBroker Dokumentation

                                        apollon77A 1 Antwort Letzte Antwort
                                        0
                                        • N nettekov

                                          @marc-berg Vielen dank für deine Antwort.

                                          Weiß Du , wofür die V1.16.1 steht.
                                          Bevor ich den SQL-Adapter , deinstalliere und wieder installiere, sollten wir erst wissen, wofür Diese Version steht.

                                          Marc BergM Offline
                                          Marc BergM Offline
                                          Marc Berg
                                          Most Active
                                          schrieb am zuletzt editiert von Marc Berg
                                          #55

                                          @nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:

                                          @marc-berg Vielen dank für deine Antwort.

                                          Weiß Du , wofür die V1.16.1 steht.
                                          Bevor ich den SQL-Adapter , deinstalliere und wieder installiere, sollten wir erst wissen, wofür Diese Version steht.

                                          Ich weiß es nicht, vielleicht es nur ein Anzeigefehler. Genauso gut kann ein Update unvollständig durchgelaufen sein. Ich finde es aber verdächtig, und eine Neuinstallation eines Adapters ist keine Raketentechnologie.

                                          NUC10I3+Ubuntu+Docker+ioBroker+influxDB2+Node Red+EMQX+Grafana

                                          Pi-hole, Traefik, Checkmk, Conbee II+Zigbee2MQTT, ESPSomfy-RTS, LoRaWAN, Arduino, KiCad

                                          Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          331

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe