一、该问题的重现步骤是什么?
TDengine中的数据不知道什么原因丢失,导致历史数据以及实时数据消失

2. 
3.
二、你期待的结果是什么?实际看到的又是什么?
我想知道这个数据是为何丢失的
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
BladexIOT ubuntu
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
平台只有在发布产品物模型时才会动超级表,而且只动属性超级表(事件、指令的超级表结构固定
,不会删改),没有删除子表的逻辑,设备子表会一直保留。
入口是 ProductFunctionEngineServiceImpl.publishOnline()(第 594 行调用
saveOrUpdateTsl),满足条件时有两种操作:
1. 删整张超级表:发布时物模型属性为空(所有属性都删光了再发布),会把整张超级表删掉。见
ProductTslServiceImpl.java:58-59。
2. 删字段:发布时如果某些属性在新物模型里没有了,会把对应字段删掉。见
ProductTslServiceImpl.java:127-129(内置字段 time / product_key / device_name
不会删,定义在 TDField.java:93)。
相关文件完整路径:
- blade-service/blade-server/src/main/java/org/springblade/iot/product/service/impl/Pro
ductFunctionEngineServiceImpl.java
- blade-core/blade-tsdb-tdengine/src/main/java/org/springblade/iot/tsdb/tdengine/impl/P
roductTslServiceImpl.java
- blade-core/blade-tsdb-tdengine/src/main/java/org/springblade/iot/tsdb/tdengine/sql/TD
Field.java
简单说就是:属性全删光→删超级表,删部分属性→删对应字段,子表和数据行都不会动。
具体你的问题,超级表没变,只有部分子表消失了,得从其他地方去排查,和平台本身应该没什么关系,因为他就没有删子表的代码在。
扫一扫访问 Blade技术社区 移动端