Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot insert INSERT INTO ts_number #304

Open
rapunzel72 opened this issue Apr 12, 2023 · 8 comments
Open

Cannot insert INSERT INTO ts_number #304

rapunzel72 opened this issue Apr 12, 2023 · 8 comments
Labels

Comments

@rapunzel72
Copy link

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

image

Versions:

  • Adapter version: v2.2.0
  • JS-Controller version: 4.0.24
  • Node version: v16.19.0
  • Operating system: rasbian bullseye
@Apollon77
Copy link
Contributor

ja muss man anschauen und fixen/aussortieren. Die interessante Frage an sich ist warum es bei dir passiert?

@Apollon77 Apollon77 added the bug label Apr 13, 2023
@Itchy-TM
Copy link

Itchy-TM commented May 6, 2023

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)

grafik

grafik

Aus irgendeinem Grund verknüpft der die Werte von id und ts und versucht das als einen Wert zu übergeben?

@rapunzel72
Copy link
Author

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!

@Apollon77
Copy link
Contributor

@Itchy-TM Hier wäre das Script interessant und ggf auch die Datenpunkt Einstellungen

@Erwin40
Copy link

Erwin40 commented Sep 26, 2024

Ich habe übrigens selbiges Problem.
Ich versuche vorher zwar zu löschen, aber das greift leider nicht immer.

@GitTomahawk
Copy link

Ich würde generell "INSERT IGNORE" für inserts bevorzugen.
Dann wird zwar ein Warning geloggt, aber zulässige Queries werden trotzdem ausgeführt.
Ich habe aktuell dass Problem dasss das Converterscript history->sql fast nur mit Fehlermeldungen beschäftigt ist.

@sebilm
Copy link

sebilm commented Dec 22, 2024

Ich bekomme den Fehler immer mehrfach (für mehrere Datenpunkte) beim Start des Adapters.

@GitTomahawk
Copy link

Ich habe sämtliche Fehler die durch doppelte ID verursacht werden bei mir (mit IGNORE) beheben können: Pull Request #407
Das löst zwar nicht die Ursache, weshalb in manchen fällen Duplikate zum Speichern an den Adapter übergeben werden - durch IGNORE stellt es allerdings für die DB kein Problem mehr dar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants