MYSQL-Funktionen

DerEddy

Benutzer
Mitglied seit
16. Jan 2025
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Folgendes Problem:
Ich möchte eine Datenbank nutzen, in der ich die Verbrauchsdaten meines Hauses notiere. Dazu gebe ich die Zählerstände (Gas, Wasser, Strom etc) in eine Datenbank ein. Um die täglichen Verbräuche zu ermitteln, ziehe ich den aktuellen Zählerstand vom Stand am Vortag ab. Das geschieht durch eine mysql-Abfrage:

UPDATE energie AS A
INNER JOIN
(
SELECT id,
v_gas, gas - LAG(gas) OVER (ORDER BY id) AS gas_verbr,
v_wasser, wasser - LAG(wasser) OVER (ORDER BY id) AS wasser_verbr,
v_netz, netz - LAG(netz) OVER (ORDER BY id) AS netz_verbr,
v_pv, pv - LAG(pv) OVER (ORDER BY id) AS pv_verbr
FROM energie
GROUP BY id
) AS B
ON A.id = B.id
SET A.v_gas = B.gas_verbr,
A.v_wasser = B.wasser_verbr,
A.v_netz = B.netz_verbr,
A.v_pv = B.pv_verbr

Mit dem Server auf dem PC (XAMPP) funktioniert das hervorragend.
Auf der Synology-Station erhalte ich jetzt eine immense Fehlermeldung:

Fatal error: Uncaught mysqli_sql_exception: Out of range value for column 'v_gas' at row 1 in /volume1/web/energie/verbr_akt01.php on line 23mysqli_sql_exception: Out of range value for column 'v_gas' at row 1 in /volume1/web/energie/verbr_akt01.php on line 23Call Stack: 0.0003 405872 1. {main}() /volume1/web/energie/verbr_akt00.php:0 0.0058 483432 2. include('/volume1/web/energie/verbr_akt01.php') /volume1/web/energie/verbr_akt00.php:46 0.0079 508520 3. mysqli_query($mysql = class mysqli { public string|int $affected_rows = *uninitialized*; public string $client_info = *uninitialized*; public int $client_version = *uninitialized*; public int $connect_errno = *uninitialized*; public ?string $connect_error = *uninitialized*; public int $errno = *uninitialized*; public string $error = *uninitialized*; public array $error_list = *uninitialized*; public int $field_count = *uninitialized*; public string $host_info = *uninitialized*; public ?string $info = *uninitialized*; public string|int $insert_id = *uninitialized*; public string $server_info = *uninitialized*; public int $server_version = *uninitialized*; public string $sqlstate = *uninitialized*; public int $protocol_version = *uninitialized*; public int $thread_id = *uninitialized*; public int $warning_count = *uninitialized* }, $query = 'UPDATE energie\r\n\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN\r\n\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSELECT id,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tv_gas, (gas - LAG(gas) OVER (ORDER BY id)) AS Gas_verbr,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tv_wasser, (wasser - LAG(wasser) OVER (ORDER BY id)) AS wasser_verbr,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tv_netz, (netz - LAG(netz) OVER (ORDER BY id)) AS netz_verbr,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tv_pv, (pv - LAG(pv) OVER (ORDER BY id)) AS pv_verbr\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tFROM energie \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tGROUP BY id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t) AS B\r\n\t\t\t\t\t\t\t\t\t\t\t\tON energie.id = B'...) /volume1/web/energie/verbr_akt01.php:23

Da es sich m.E. nicht um einen Fehler in der Abfrage handelt, kann es sich nur um eine andere Einstellung im Skript auf der Station handeln. Und da hört mein Wissen auf. Hilfe. Danke
 

JohneDoe

Benutzer
Mitglied seit
06. Jan 2025
Beiträge
65
Punkte für Reaktionen
32
Punkte
18
Das hört sich eher so an, als ob du die Tabellenspalte v_gas anders definiert hast.

Edit: Ohne das Skript und die DB kann man dir auch sehr schwer helfen. Man müsste ja schon wissen wie ist die DB aufgebaut, welche Datentypen erwartest du und was übergibst du..... Liefere doch mal mehr Informationen. Ansonsten will ich mir auch nicht die Mühe machen zu rätseln was es sein könnte.
 
Zuletzt bearbeitet:

eMBae

Benutzer
Mitglied seit
06. Jul 2016
Beiträge
93
Punkte für Reaktionen
32
Punkte
18
mysqli-Extension ist auf der Synology aktiv?
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.196
Punkte für Reaktionen
73
Punkte
68
Konvertiere das Script mal ins Unix Format
 

Ronny1978

Benutzer
Sehr erfahren
Mitglied seit
09. Mai 2019
Beiträge
2.314
Punkte für Reaktionen
993
Punkte
148
Tut mir leider, dass ich jetzt mal blöd frage; Wie viele Zähler sind das denn? Und die Stände trägst du manuell ein??? Wieso machst du das nicht in Excel? Das geht doch viel einfacher und komfortabler - auch in der Auswertung.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat