[vz-users] Aggregation (minute) schlägt fehl

Michael Hartmann hartmann-micha at web.de
Di Mär 21 18:31:06 CET 2023


Ich habe den von René verlinkten thread durchgelesen. Ja, das ist das gleiche Problem wie bei mir. Nur das der Workaround den er seinerzeit durchgeführt hat,, nämlich das Aggregate-Table zu löschen und neu aufzubauen bei mir nur temporär wirkt.

 

Der Fehler kommt nach einiger Zeit wieder.

 

Leider scheint es seither keine Lösung dafür zu geben oder auch nur eine konkrete Ursache bekannt zu sein.

 

Grüße

 

Micha

 

Von: volkszaehler-users [mailto:volkszaehler-users-bounces at demo.volkszaehler.org] Im Auftrag von René W
Gesendet: Montag, 20. März 2023 15:10
An: volkszaehler.org - users
Betreff: Re: [vz-users] Aggregation (minute) schlägt fehl

 

Ich hatte „damals“ auch schon diese nervige Meldung: 

https://demo.volkszaehler.org/pipermail/volkszaehler-users/2019-June/013374.html

 

Vielleicht sind dort ja noch ein paar Hinweise. Ich selber nutze VZ nicht mehr dafür.

 

Gruß René

 

Michael Hartmann <hartmann-micha at web.de> schrieb am Mo. 20. März 2023 um 15:03:

Hallo Christian,

 

ich hatte erst an negative Werte gedacht und keine um den „Ausstiegszeitpunkt“ gefunden. Das scheidet aber auch aus, da sich die Werte im Zähler befinden und somit keine Division durch Null hervorrufen können.

 

Was mich irritiert ist das nach Löschen der aggregierten Daten deren Neuerstellung fehlerfrei durchläuft.

 

Kann jemand aus der Fehlermeldung erkennen um welchen Kanal (Channel_ID) es gehen könnte?

 

Grüße

 

Micha

 

Von: volkszaehler-users [mailto:volkszaehler-users-bounces at demo.volkszaehler.org] Im Auftrag von Christian Lange
Gesendet: Montag, 20. März 2023 11:29
An: volkszaehler-users at demo.volkszaehler.org
Betreff: Re: [vz-users] Aggregation (minute) schlägt fehl

 

Hi Micha, 

ich hab leider keine Ahnung, wie die Datenbank aussieht (ich nutze selbst eine andere), aber der Fehler sagt aus, dass eine Division durch 0 vorliegt. 

Die einzige Zeile in der SQL Query, die mir da ins Auge sticht ist diese hier:

> COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - MIN(agg.prev_timestamp)), 

Das Maximum des Timestamps minus dem Minimum des vorherigen Timestamps aus der (on the fly) erzeugten "agg" Tabelle sind zusammen 0. Daher klappt die Division und damit die SQL Query nicht. Die Daten stammen (soweit ich das sehen kann) aus der "data" Tabelle. Vielleicht fällt dir ja da etwas auf in den Daten bei den Timestamps. Den Rest überlasse ich den Experten, die das Tool so im Einsatz haben ;)

Viel Erfolg,
Christian 

 

 

Am 20.03.2023 um 10:37 schrieb Michael Hartmann:

Hallo,

 

ich hole das hier noch einmal vor, da es ziemliche nervt.

 

Via cronjob lasse ich alle 10min eine Aggregation auf die Minute laufen. Bereits vor einigen Wochen ist diese dann plötzlich mit der folgenden Fehlermeldung ausgestiegen:

 

In AbstractMySQLDriver.php line 128:

 

  An exception occurred while executing 'REPLACE INTO aggregate (channel_id,

  type, timestamp, value, count) SELECT channel_id, ? AS type, MAX(agg.timest

  amp) AS timestamp, COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) - M

  IN(agg.prev_timestamp)), AVG(agg.value)) AS value, COUNT(agg.value) AS coun

  t FROM ( SELECT channel_id, timestamp, value, value * (timestamp - @prev_ti

  mestamp) AS val_by_time, COALESCE(@prev_timestamp, 0) AS prev_timestamp, @p

  rev_timestamp := timestamp FROM data CROSS JOIN (SELECT @prev_timestamp :=

  UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(MAX(timestamp) / 1000, "%Y-%m-%d %H:%

  i:00"), INTERVAL 1 minute)) * 1000 FROM aggregate WHERE type = ? AND aggreg

  ate.channel_id = ?) AS vars WHERE channel_id = ? AND timestamp >= IFNULL((S

  ELECT UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(MAX(timestamp) / 1000, "%Y-%m-%

  d %H:%i:00"), INTERVAL 1 minute)) * 1000 FROM aggregate WHERE type = ? AND

  aggregate.channel_id = ? ), 0) AND timestamp < UNIX_TIMESTAMP(DATE_FORMAT(N

  OW(), "%Y-%m-%d %H:%i:00")) * 1000 ) AS agg GROUP BY channel_id, YEAR(FROM_

  UNIXTIME(timestamp/1000)), DAYOFYEAR(FROM_UNIXTIME(timestamp/1000)), HOUR(F

  ROM_UNIXTIME(timestamp/1000)), MINUTE(FROM_UNIXTIME(timestamp/1000))' with

  params [1, 1, "3", "3", 1, "3"]:

 

  SQLSTATE[22012]: Division by zero: 1365 Division by 0

 

 

In Exception.php line 18:

 

  SQLSTATE[22012]: Division by zero: 1365 Division by 0

 

 

In PDOStatement.php line 117:

 

  SQLSTATE[22012]: Division by zero: 1365 Division by 0

 

Die Aggregation auf Stunde und Tag bereitet (bisher) keine Probleme.

 

Beim letzten Mal hatte ich die Aggregationstabelle gelöscht und neu aufgebaut. Nach einigen Wochen kommt der Fehler nun wieder.

 

Kann mir jemand erklären wo das Problem liegt? Die Fehlermeldung kann ich nicht interpretieren.

 

Viele Grüße

 

Micha

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20230321/e64787ed/attachment.html>


Mehr Informationen über die Mailingliste volkszaehler-users