若想实现当设备存在多个属性字段时,只上报某一个字段的数据应该如何实现

Blade 未结 1 23

一、该问题的重现步骤是什么?

1. 创建物模型时,使用模块功能


二、你期待的结果是什么?实际看到的又是什么?

某设备存在很多属性,但是上报属性时,只上报温度字段;

在将属性分模块存储后,上报后TDengine报错

image.png

image.png

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex-iot ubuntu

四、请提供详细的错误堆栈信息,这很重要。

2025-10-29 08:31:46.577 ERROR 1 --- [pool-3-thread-1] o.s.iot.core.task.BaseBatchTask          : 批量消费失败,数据可能会丢失


org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO `device_property_ztnmviabtorp_swun7nxa0omuwldf` USING `device_property_ztnmviabtorp` TAGS ('ztNmVIaBtOrp', 'swUN7NXa0oMUWldF') (`time`, `temperature`) VALUES (?, ?);]; SQL state []; error code [9730]; TDengine ERROR (0x2602): sql: INSERT INTO `device_property_ztnmviabtorp_swun7nxa0omuwldf` USING `device_property_ztnmviabtorp` TAGS ('ztNmVIaBtOrp', 'swUN7NXa0oMUWldF') (`time`, `temperature`) VALUES (1761697905771, 30.5);, desc: Invalid column name: temperature

at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1549)

at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:677)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:970)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1014)

at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:1024)

at org.springblade.iot.tsdb.tdengine.dao.TDEngineTemplate.saveBatch(TDEngineTemplate.java:108)

at org.springblade.iot.core.task.BaseBatchTask.consumerQueueData(BaseBatchTask.java:72)

at org.springblade.iot.core.task.BaseBatchTask$1.run(BaseBatchTask.java:53)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

at java.base/java.lang.Thread.run(Thread.java:840)

Caused by: java.sql.SQLException: TDengine ERROR (0x2602): sql: INSERT INTO `device_property_ztnmviabtorp_swun7nxa0omuwldf` USING `device_property_ztnmviabtorp` TAGS ('ztNmVIaBtOrp', 'swUN7NXa0oMUWldF') (`time`, `temperature`) VALUES (1761697905771, 30.5);, desc: Invalid column name: temperature

at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:95)

at com.taosdata.jdbc.rs.RestfulStatement.execute(RestfulStatement.java:98)

at com.taosdata.jdbc.rs.RestfulStatement.execute(RestfulStatement.java:78)

at com.taosdata.jdbc.rs.RestfulStatement.executeUpdate(RestfulStatement.java:56)

at com.taosdata.jdbc.rs.RestfulPreparedStatement.executeUpdate(RestfulPreparedStatement.java:59)

at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:241)

at org.springframework.jdbc.core.JdbcTemplate.lambda$update$2(JdbcTemplate.java:975)

at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)

... 12 common frames omitted

五、若有更多详细信息,请在下面提供。

若想实现当设备存在多个属性字段时,只上报某一个字段的数据应该如何实现

1条回答
  • 用设备模拟试试看呢,只上报一个属性是可以的,上报的数据是什么就加到params字段里就可以了

    CleanShot20251029102434@2x.png

    作者追问:2小时前

    image.png设备模拟是查询的sql啊,并没有往表里插入数据

    调用http接口上报数据时,就会报错,应该怎么解决?

    image.pngimage.png

    0 讨论(0)
提交回复