guten morgen!
neuerdings hab ich hier wieder ein problem. merke es jetzt erst. der datenfluss ist aber schon vor einigen tagen versiegt:
das script, das da arbeitet, ist hier zu besichtigen (obwohl ich da in dem zeitraum nix angefasst habe).
eine fehlermeldung dazu aus wtee:
hiveeyes/27041c2a-8afd-4a1e-b3ae-44233fa1f06b/mois/yun/message-json {"Timestamp": "2023-07-13T18:16:58", "CountPerMinute": "74", "GammaRadiation": "0.100 "}hiveeyes/27041c2a-8afd-4a1e-b3ae-44233fa1f06b/mois/yun//error.json { "type": "<class 'influxdb.exceptions.InfluxDBClientError'>", "message": "400: {\"error\":\"partial write: field type conflict: input field \\\"CountPerMinute\\\" on measurement \\\"mois_yun_sensors\\\" is type float, already exists as type string dropped=1\"}", "description": "Error processing MQTT message \"b'{\"Timestamp\": \"2023-07-13T18:16:58\", \"CountPerMinute\": \"74\", \"GammaRadiation\": \"0.100 \"}'\" from topic \"hiveeyes/27041c2a-8afd-4a1e-b3ae-44233fa1f06b/mois/yun/message-json\".", "timestamp": "2023-07-13T16:18:33+00:00"}
ein daten-typ-problem also.
in der datenbank gibts das feld schrägerweise zweimal:
> SHOW FIELD KEYS FROM mois_yun_sensors
name: mois_yun_sensors
fieldKey fieldType
-------- ---------
CountPerMinute float
CountPerMinute string
GammaRadiation float
Timestamp string
brightness float
humidity hive1 float
...
offensichtlich weg kann CountPerMinute
vom typ string
:
> SELECT "CountPerMinute"::string FROM mois_yun_sensors LIMIT 10000
name: mois_yun_sensors
time CountPerMinute
---- --------------
1688947793034058021 null
1688947926576962138 null
1688986152165107793 null
1689074337213801733 null
1689075128204053461 null
1689159402702461407 null
1689326610519521504 null
1689326742515015247 null
>
die einzelnen einträge hab ich inzwischen manuell gelöscht. das feld - und der fehler - ist aber immer noch da.
und hier komme ich nicht weiter. ich krieg die syntax nicht zusammen, um das richtige der beiden mit dem selben namen zu löschen.
hm, ich lerne gerade: felder löschen geht gar nicht.
muss ich tatsächlich alle felder die ich behalten will mit sowas wie
SELECT "CountPerMinute" AS "CountPerMinute" INTO "mois_yun_sensors_tmp" FROM "mois_yun_sensors"
umziehen, dann mois_yun_sensors
mit dem string
-feld droppen und dann wieder alle, die ich behalten will, zurück kopieren (und zum aufräumen mois_yun_sensors_tmp
droppen)?
ich freu mich über datenbankmanipulationshilfe an dieser stelle.
und wie ist das überhaupt soweit gekommen? bzw: kann ich verhindern, dass das wieder passiert?