Hi,
After upgrading to Ubuntu 16.04 I can not get SBFspotUploadDeamon to start uploading.
If I start the deamon manually I get only:
[13:08:40] INFO: Starting SBFspotUploadDeamon Version 1.0.1
[13:08:40] INFO: Starting Daemon...
in the log, if I reboot the server I get:
[13:13:09] INFO: Starting SBFspotUploadDeamon Version 1.0.1
[13:13:09] ERROR: Unable to open database. Check configuration.
I'm using Mysql: Server version: 5.7.12-0ubuntu1 (Ubuntu)
The database gets populated correctly.
When I start the deamon the mysql query log on (turned it on temporarily) it showed:
SELECT DATE_FORMAT(Timestamp,'%Y%m%d,%H:%i'),V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12 FROM vwPvoData WHERE TimeStamp>NOW()-INTERVAL 13 DAY AND PVoutput IS NULL AND Serial=2120110081 ORDER BY TimeStamp LIMIT 30
When I tried this query in PHPmyadmin I stumbled into this problem:
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'vwConsumption.Timestamp' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
The deamon started uploading after I removed the 'only_full_group_by' from sql_mode.
BR,
Hubert
Comments: Here's the fix (for MySQL only) Two views should be altered: __vwAvgConsumption__ and __vwSpotData__ ``` SQL USE sbfspot; DROP VIEW IF EXISTS vwAvgConsumption; CREATE VIEW vwAvgConsumption AS SELECT Nearest5min, cast(avg(EnergyUsed) As decimal(9)) As EnergyUsed, cast(avg(PowerUsed) As decimal(9)) As PowerUsed FROM vwConsumption GROUP BY Nearest5Min; DROP VIEW IF EXISTS vwSpotData; CREATE View vwSpotData AS Select From_UnixTime(Dat.TimeStamp) AS TimeStamp, From_UnixTime(CASE WHEN (Dat.TimeStamp % 300) < 150 THEN Dat.TimeStamp - (Dat.TimeStamp % 300) ELSE Dat.TimeStamp - (Dat.TimeStamp % 300) + 300 END) AS Nearest5min, Inv.Name, Inv.Type, Dat.Serial, Pdc1, Pdc2, Idc1, Idc2, Udc1, Udc2, Pac1, Pac2, Pac3, Iac1, Iac2, Iac3, Uac1, Uac2, Uac3, Pdc1+Pdc2 AS PdcTot, Pac1+Pac2+Pac3 AS PacTot, CASE WHEN Pdc1+Pdc2 = 0 THEN 0 ELSE CASE WHEN Pdc1+Pdc2>Pac1+Pac2+Pac3 THEN ROUND((Pac1+Pac2+Pac3)/(Pdc1+Pdc2)*100,1) ELSE 100.0 END END AS Efficiency, Dat.EToday, Dat.ETotal, Frequency, Dat.OperatingTime, Dat.FeedInTime, ROUND(BT_Signal,1) AS BT_Signal, Dat.Status, Dat.GridRelay, ROUND(Dat.Temperature,1) AS Temperature FROM SpotData Dat INNER JOIN Inverters Inv ON Dat.Serial=Inv.Serial; ```
After upgrading to Ubuntu 16.04 I can not get SBFspotUploadDeamon to start uploading.
If I start the deamon manually I get only:
[13:08:40] INFO: Starting SBFspotUploadDeamon Version 1.0.1
[13:08:40] INFO: Starting Daemon...
in the log, if I reboot the server I get:
[13:13:09] INFO: Starting SBFspotUploadDeamon Version 1.0.1
[13:13:09] ERROR: Unable to open database. Check configuration.
I'm using Mysql: Server version: 5.7.12-0ubuntu1 (Ubuntu)
The database gets populated correctly.
When I start the deamon the mysql query log on (turned it on temporarily) it showed:
SELECT DATE_FORMAT(Timestamp,'%Y%m%d,%H:%i'),V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12 FROM vwPvoData WHERE TimeStamp>NOW()-INTERVAL 13 DAY AND PVoutput IS NULL AND Serial=2120110081 ORDER BY TimeStamp LIMIT 30
When I tried this query in PHPmyadmin I stumbled into this problem:
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'vwConsumption.Timestamp' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
The deamon started uploading after I removed the 'only_full_group_by' from sql_mode.
BR,
Hubert
Comments: Here's the fix (for MySQL only) Two views should be altered: __vwAvgConsumption__ and __vwSpotData__ ``` SQL USE sbfspot; DROP VIEW IF EXISTS vwAvgConsumption; CREATE VIEW vwAvgConsumption AS SELECT Nearest5min, cast(avg(EnergyUsed) As decimal(9)) As EnergyUsed, cast(avg(PowerUsed) As decimal(9)) As PowerUsed FROM vwConsumption GROUP BY Nearest5Min; DROP VIEW IF EXISTS vwSpotData; CREATE View vwSpotData AS Select From_UnixTime(Dat.TimeStamp) AS TimeStamp, From_UnixTime(CASE WHEN (Dat.TimeStamp % 300) < 150 THEN Dat.TimeStamp - (Dat.TimeStamp % 300) ELSE Dat.TimeStamp - (Dat.TimeStamp % 300) + 300 END) AS Nearest5min, Inv.Name, Inv.Type, Dat.Serial, Pdc1, Pdc2, Idc1, Idc2, Udc1, Udc2, Pac1, Pac2, Pac3, Iac1, Iac2, Iac3, Uac1, Uac2, Uac3, Pdc1+Pdc2 AS PdcTot, Pac1+Pac2+Pac3 AS PacTot, CASE WHEN Pdc1+Pdc2 = 0 THEN 0 ELSE CASE WHEN Pdc1+Pdc2>Pac1+Pac2+Pac3 THEN ROUND((Pac1+Pac2+Pac3)/(Pdc1+Pdc2)*100,1) ELSE 100.0 END END AS Efficiency, Dat.EToday, Dat.ETotal, Frequency, Dat.OperatingTime, Dat.FeedInTime, ROUND(BT_Signal,1) AS BT_Signal, Dat.Status, Dat.GridRelay, ROUND(Dat.Temperature,1) AS Temperature FROM SpotData Dat INNER JOIN Inverters Inv ON Dat.Serial=Inv.Serial; ```