Open rapunzel72 opened 1 year ago
ja muss man anschauen und fixen/aussortieren. Die interessante Frage an sich ist warum es bei dir passiert?
Ich habe einen ähnlichen Fehler
Cannot insert INSERT INTO iob
.ts_number (id, ts, val, ack, _from, q) VALUES (516, 1683334519950, 880, 1, 7, 0);: Error: Duplicate entry '516-1683334519950' for key 'PRIMARY' (id: 0_userdata.0.Verbrauch.Allgemein.Harvest.ErzeugungPV+BWR)
Aus irgendeinem Grund verknüpft der die Werte von id und ts und versucht das als einen Wert zu übergeben?
Aus der Datenpunkt id und dem Timestamp ts wird der Primary key für die SQL datenbank gebildet. Da es zwei Quellen für den Datenpunkt gibt - SQL und Javascript, die mit dem gleichen ts versehen werden, kommt es zu der obigen Fehlermeldung. Da es eine Abhängigkeit zwischen den Quellen geben muss, zuerst tritt der javascript Datenpunkt auf und dann der SQL Datenpunkt, daß diese unterschiedliche ts bekommen. Scheinbar ist der Ablauf so schnell, daß beide den gleichen ts bekommen!
@Itchy-TM Hier wäre das Script interessant und ggf auch die Datenpunkt Einstellungen
Ich schreibe per javascript Temperaturdaten alle 5 Minuten in in einen Datenpunkt. Dieser Datenpunkt wir über den SQL Adapter in eine postgresql Datenbank geschrieben. Die Einstellungen für das Logging ist dem ersten Screenshot zu entnehmen. Ab un zu kommt es im Logfile zu folgender Fehlermeldung:
2023-04-10 07:01:53.188 - error: sql.0 (32475) Cannot insert INSERT INTO ts_number (id, ts, val, ack, _from, q) VALUES (4, 1681102502871, 54.7, true, 2, 0),(4, 1681102802872, 54.7, true, 2, 0),(4, 1681102502853, 54.7, true, 3, 0),(4, 1681102802872, 54.9, true, 3, 0);: error: doppelter Schlüsselwert verletzt Unique-Constraint »ts_number_pkey« (id: T_SpeicherUnten)
Diese Fehlermeldung tritt auf, da zwei Datensätze mit identischem Primary Key, bestehend aus id und ts geschrieben werden sollen, jedoch aus unterschiedlichen Quellen. Auch in den Verlaufsdaten des Datenpunktes (Screenshot 2) sind die gleichen Daten aus dem Datenpunk doppelt vorhanden, einmal mit der Quelle sql.0 adapter und einmal mit Quelle javascript.0 adapter. In der Regel haben die Daten aus den beiden Quellen unterschiedliche ts und somit können diese ohne Fehler in der SQL Datenbank gespeichert werden.
Ist es möglich die Daten durch geeignete Parameterwahl nur einer ausgewählten Quelle in der Datenbank zu speichern? Gibt es andere Möglichkeiten, den Fehler oben zu vermeiden?
Screenshots & Logfiles![image](https://user-images.githubusercontent.com/130582111/231504957-487736ff-3a9f-4fc5-bfc2-516aec96b22a.png)
Versions: