当实体具有包含PosgreSQL chracter的id时,cygnus及其-接收器似乎无法创建postgres表,例如Fiware教程中推荐的urn:ngsi-ld:Motion:001。
我建立了一个简单的堆栈与猎户座,一个物联网代理,以及Cygnus和一个PostgreSQL数据库.
但是,PostgreSQL报告了错误
2020-11-10 08:39:33.404 UTC [66] ERROR: syntax error at or near "-" at character 44
2020-11-10 08:39:33.404 UTC [66] STATEMENT: CREATE TABLE IF NOT EXISTS openiot.urn_ngsi-ld_motion_001_thing (recvTimeTs text,recvTime text,fiwareServicePath text,entityId text,entityType text,attrName text,attrType text,attrValue text,attrMd text)当使用不同的实体id时,不会发生错误。然后按预期的方式保存数据。
发布于 2021-02-10 11:21:24
从Postgresql接收器文档中的编码部分的角度来看,似乎没有对-进行特殊编码。
因此,-将发展为Postgresql表创建逻辑,并引发一个错误,因为它在表名中被数据库禁止。
您可以探索名称映射选项(尽管我不确定是否可以使用它更改实体it.)。另一个可能的解决方法(非常简单)是在实体ids中不使用-,例如:urn:ngsild:Motion:001
https://stackoverflow.com/questions/64767280
复制相似问题