NEWS
SQL.Adpter: Insert-Befehle innerhalb von 40ms
-
ich verstehe nicht, was du mit "es wird nicht angeboten" meinst.
ich habe ja die links zur doku gesendet, wie man das log aktiviert.
du musst an die datenbank befehle senden, genauso wie du queries sendest.
dann werden die requests in eine datei geschrieben.aber ich glaube wir steigen hier in eine technische tiefe ab, bei der es sich dann nicht mehr lohnt.
ich wäre dann raus. -
@nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:
Webserver eine HTML -Seite erstellen, was das java-script ausführt.
Oh, dann vergiss den Tipp direkt
Da fangen wir ja bei Adam und Eva an.
-
@haus-automatisierung OK, verstanden. Ich versuche es selber mal
@OliverIO ich versuche es als sql Statement beim MySQL Server
Ich melde mich, wenn ich ein Ergebnis habe, kann ein paar Tage dauern
Gruß nettekov
-
@nettekov sagte in SQL.Adpter: Insert-Befehle innerhalb von 40ms:
OK, verstanden.
War nicht böse gemeint. Aber serverseitiges JavaScript und auf Client-Seite ausgeführtes sind zwei komplett unterschiedliche paar Schuhe. Nur eines von beiden ist nodejs
Und wenn man das schon erklären muss, wäre es ein weiter Weg mit npm / package.json / require() / usw. anzufangen.
Generell kannst Du aber einfach eine Textdatei ablegen und diese dann mit node über deine Shell aufrufen:
node blabla.js
-
@haus-automatisierung alles gut, habe es auch nicht böse aufgefasst.
Es hätte eventuell,schnell erklärt werden können, bevor ich mich lange auf die Suche mache.
Aber mir dem Hinweis node kann ich schon was anfangen.Wenn ich was habe, melde ich mich.
Gruß nettekov -
@haus-automatisierung Ich will am Wochenende node sql Script testen
bevor ich aber das tun, wollte ich vorher fragen, ob es dem IOBroker , bzw dem NPM schadet, wenn ich das mysql package installiere:
$ npm install mysql
und dann mit einem ähnliche Script wie Diesem arbeite:
var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret', database : 'my_db' }); connection.connect(); connection.query('************', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); }); connection.end();
Gruss nettekov
-
@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. -
@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
-
@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. -
@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.
-
@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 -
@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
-
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.
-
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.
-
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:
Soo. die mariadb und die mysqldb werden jetzt auch geloggt.
Hier sind schon die ersten Ergebnisse:
Ich versuche morgen mal bescheid zu geben, was das Ergebnis ist.
Gruss Nettekov
-
-
setze deine energie erst mal nicht so sehr in wireshark. das hat seine eigenen untiefen.
nutze lieber ersteinmal die Möglichkeiten der DB -
@oliverio Anbei die erste Fehlermeldung:
und das entsprechende Log: (Die 3 Quittungen kommen von den 3 oberen Queries)
Der INSERT-Befehl kommt sauber an.
Und jetzt den selben INSERT-Befehl nochmal über einen anderen SQL-Client geschickt, dann ist alles OK:
Gruss Nettekov
-
@oliverio Da gebe ich dir Recht, aber Wireshark war schneller aufzubauen
-
@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 DBDa gebe ich dir Recht, aber Wireshark war schneller aufzubauen
-
ok also auch hier sehen die sqls gut aus.
dann noch das db error log prüfenhttps://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?
-
@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. -
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:
SQL-Adapter mit zweiter Version v1.16.1:
IOBroker node:
MariaDB auf Synology-NAS:
MySQL Server auf lokalen PC(Nur zur Testzwecken: ist veralte von XAMPP, kann ich aber ggf aktualisieren)
Sollte ich eine wichtige Version vergessen haben, sagt kurz Bescheid.
Gruss Nettekov