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!
-
@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
-
Ok, selber die Lösung gefunden!
War sogar in dem alten Beitrag enthalten....
Es muss der Verweis auf den Namen der DB hinzugefügt werden!
iobroker.datapoints anstelle von datapoints