NEWS
[gelöst] Datenbankabfragen nach Wechsel von sqlite zu MySQL
-
Ich nutze seit Ewigkeiten die Arte der Datenbankabfrage, wie in dem alten verlinkten Beitrag:
Re: [gelöst] Min /Max TemperatursensorBeispiel aus meiner Abfrage, die unter sqlite problemlos lief und jetzt nicht mehr will:
//----- SQL-Abfrage durchführen function SQLAbfrage () { log('2. ) Datenpunkt => ' + id); log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = \'' + id + '\''); sendTo('sql.0', 'query', 'SELECT * FROM datapoints WHERE name = \'' + id + '\'', GetResults); } //--------------------------------------- function GetResults (dpoint) { log('3. ) Funktion -> GetResults aufrufen'); var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('3a.) Startzeit : ' + start_time); log('3b.) Endzeit : ' + end_time); log(' Datenpunkt: ' + dpoint.result); log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time); log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Avg(val),1) As AvgVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',average); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); }Nach der Umstellung auf MySQL klappt dies jedoch nicht mehr.
Hier die Meldung:
javascript.0 (559) TypeError: Cannot read property 'val' of undefined at Object.GetResults [as cb] (script.js.common.Wind_hourly:36:45) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4694:71) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:224:41) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5) at processImmediate (timers.js:658:5)Das lässt sich doch bestimmt beheben ;)
Vielen Dank!
-
Ich nutze seit Ewigkeiten die Arte der Datenbankabfrage, wie in dem alten verlinkten Beitrag:
Re: [gelöst] Min /Max TemperatursensorBeispiel aus meiner Abfrage, die unter sqlite problemlos lief und jetzt nicht mehr will:
//----- SQL-Abfrage durchführen function SQLAbfrage () { log('2. ) Datenpunkt => ' + id); log('2a.) Abfrage => SELECT * FROM datapoints WHERE name = \'' + id + '\''); sendTo('sql.0', 'query', 'SELECT * FROM datapoints WHERE name = \'' + id + '\'', GetResults); } //--------------------------------------- function GetResults (dpoint) { log('3. ) Funktion -> GetResults aufrufen'); var end_time = new Date().getTime(); var start_time = new Date().getTime() - dt; log('3a.) Startzeit : ' + start_time); log('3b.) Endzeit : ' + end_time); log(' Datenpunkt: ' + dpoint.result); log('3c.) result : ' + JSON.stringify(dpoint.result) + ' -//- ' + start_time); log(' Datenpunkt: ' + dpoint.result[0].id + ' ---//--- ' + dpoint.result[0].name); sendTo('sql.0', 'query', 'SELECT Round(Avg(val),1) As AvgVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',average); sendTo('sql.0', 'query', 'SELECT Round(Max(val),1) As MaxVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',maximum); sendTo('sql.0', 'query', 'SELECT Round(Min(val),1) As MinVal FROM ts_number WHERE ts >= ' + start_time + ' AND id=' + dpoint.result[0].id + ' GROUP BY id',minimum); }Nach der Umstellung auf MySQL klappt dies jedoch nicht mehr.
Hier die Meldung:
javascript.0 (559) TypeError: Cannot read property 'val' of undefined at Object.GetResults [as cb] (script.js.common.Wind_hourly:36:45) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4694:71) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:224:41) at runCallback (timers.js:705:18) at tryOnImmediate (timers.js:676:5) at processImmediate (timers.js:658:5)Das lässt sich doch bestimmt beheben ;)
Vielen Dank!
@CaneTLOTW
Mhhh, das ist ein alter Thread ... evtl. ist da bei der Forumsmigration was "verschütt" gegangen ? -
Weiß nicht genau, was du damit meinst. Lief ja alles bis zur heutigen Umstellung der Datenbank.
Der ausgelesene Wert - ID des Datenpunkts in der Datenbank kommt schienbar unter MySQL als undefined zurück und kann daher nicht weiter ausgewertet werden...
Antwort:
script.js.common.Temp_24_Min_Max: Datenpunkt: undefined
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden