NEWS
[Gelöst] SQL-Adapter - doppelte Einträge
-
Guten Abend zusammen!
Ich logge mehrere Datenpunkte mit dem SQL-Adapter. Leider erscheinen immer wieder Fehlermeldungen im Log:
(8892) Cannot insert INSERT INTO `ioBroker`.ts_number (id, ts, val, ack, _from, q) VALUES(114, 1576348187661, 121.586, 0, 11, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1576348187661' for key 'PRIMARY (8892) Cannot insert INSERT INTO `ioBroker`.ts_number (id, ts, val, ack, _from, q) VALUES(117, 1576348187661, 13.401, 0, 11, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1576348187661' for key 'PRIMARY' (8892) Cannot insert INSERT INTO `ioBroker`.ts_number (id, ts, val, ack, _from, q) VALUES(116, 1576348187661, 1470663, 0, 11, 0);: Error: ER_DUP_ENTRY: Duplicate entry '1576348187661' for key 'PRIMARY
Hier sieht man schon, dass der SQL Adapter versucht alle Werte mit dem gleichen timestamp (ts) zu speichern. Leider ist es ja so, dass der SQL Adapter alle Werte in eine "große Tabelle" speichert und der timestamp der primary key ist.
Habt ihr eine Idee wie ich das lösen kann? Ich habe schon mit verschiedenen Entprell-Zeiten in den einzelnen Datenpunkten versucht (zwischen 1000 und 3000 ms) - leider ohne Erfolg
Schöne Grüße aus Bayern!
-
Also die Option "Parallelanfragen erlauben" in den Einstellungen des SQL-Adapters zu deaktivieren hilft leider auch nicht
Hat den sonst keiner das Problem der den SQL-Adapter für das Login von Datenpunkten benutzt?
Ich habe bemerkt, dass der Adapter scheinbar bei einigen einen eigenen Primary-Key mittels "id + ts" erzeugt (z.B. 23-1450179321000). Das macht er bei mir leider nicht...
-
Vielen, vielen herzlichen Dank an die schnelle und sehr kompetente Unterstützung von @apollon77 via gitHub. Mit seiner Hilfe konnte ich das Problem sehr schnell lösen.
https://github.com/ioBroker/ioBroker.sql/issues/90Aus irgendwelchen, nicht mehr nachvollziehbaren Gründen waren die Primary-Keys in der MySQL-DB nicht richtig angelegt.
Primary-Key IST: ts
Primary-Key SOLL: id + tsDie Lösung war in phpMyAdmin in der Tabelle ioBroker.ts_number unter "Indizes" die Reihen "id" und "ts" hinzuzufügen.