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-mi...@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-boun...@demo.volkszaehler.org] *Im Auftrag von *Christian > Lange > *Gesendet:* Montag, 20. März 2023 11:29 > *An:* volkszaehler-users@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 > >