MYSQL-Funktionen

DerEddy

Benutzer
Registriert
16. Jan. 2025
Beiträge
2
Reaktionspunkte
1
Punkte
3
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
 
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:
mysqli-Extension ist auf der Synology aktiv?
 
Konvertiere das Script mal ins Unix Format
 
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.
 
Erst einmal danke für eure Antworten.

Der Fehler hat sich aufgeklärt. Ein Zahlendreher hat zu einer so hohen Differenz geführt, dass die Datenbank sich geweigert hat, Werte auszugeben.
Seid bitte nicht sauer. Ich habe vier Tage diesen Fehler übersehen und bin fast verzweifelt.
Das ganze wäre sicher eher ein Thema in einem PHP- oder MYSQL-Forum gewesen. Aber auch da hätte ich mich schön blamiert.
Sorry
 
  • Like
Reaktionen: dil88

Additional post fields

 

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