物联网,设备通过Mqtt上传数据无法写入时序数据库

Blade 未结 1 10

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

1. 多次尝试重新发布物模型,且超级表确实创建了
image.png

2. 使用设备模拟器发送属性上报消息

3. 消息上传并不会报错,但 server后台报错:

ladex-iot-server  | 2026-04-13 18:11:55.970 ERROR 13 --- [  XNIO-1 task-4] o.s.i.t.tdengine.dao.TDEngineTemplate    : TdEngine getCountBySql error 请检查产品物模型是否发布, sql:SELECT COUNT(*)

bladex-iot-server  | FROM `device_property_jkerjk97oub_bg6tb5vdls4d05gz`

bladex-iot-server  | WHERE 1 = 1

bladex-iot-server  | 

bladex-iot-server  | org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [SELECT COUNT(*)

bladex-iot-server  | FROM `device_property_jkerjk97oub_bg6tb5vdls4d05gz`

bladex-iot-server  | WHERE 1 = 1]; SQL state []; error code [9731]; TDengine ERROR (0x2603): sql: SELECT COUNT(*)

bladex-iot-server  | FROM `device_property_jkerjk97oub_bg6tb5vdls4d05gz`

bladex-iot-server  | WHERE 1 = 1, desc: Fail to get table info, error: Table does not exist

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1557)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:408)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:476)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:486)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:519)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:526)

bladex-iot-server  |    at org.springblade.iot.tsdb.tdengine.dao.TDEngineTemplate.getCountBySql(TDEngineTemplate.java:306)

bladex-iot-server  |    at org.springblade.iot.tsdb.tdengine.dao.TDEngineTemplate.getPageBySql(TDEngineTemplate.java:279)

bladex-iot-server  |    at org.springblade.iot.tsdb.tdengine.dao.TDEngineTemplate.getDevicePageBySql(TDEngineTemplate.java:391)

bladex-iot-server  |    at org.springblade.iot.tsdb.tdengine.impl.DeviceDataServiceImpl.getDevicePropertyPage(DeviceDataServiceImpl.java:143)

bladex-iot-server  |    at org.springblade.iot.device.service.impl.DeviceSequenceServiceImpl.getDevicePropertyPage(DeviceSequenceServiceImpl.java:86)

bladex-iot-server  |    at org.springblade.iot.device.controller.DeviceSequenceController.propertyHistory(DeviceSequenceController.java:90)

bladex-iot-server  |    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

bladex-iot-server  |    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

bladex-iot-server  |    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

bladex-iot-server  |    at java.base/java.lang.reflect.Method.invoke(Method.java:569)

bladex-iot-server  |    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360)

bladex-iot-server  |    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)

bladex-iot-server  |    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

bladex-iot-server  |    at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:174)

bladex-iot-server  |    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)

bladex-iot-server  |    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728)

bladex-iot-server  |    at org.springblade.iot.device.controller.DeviceSequenceController$$SpringCGLIB$$0.propertyHistory(<generated>)

bladex-iot-server  |    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

bladex-iot-server  |    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

bladex-iot-server  |    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

bladex-iot-server  |    at java.base/java.lang.reflect.Method.invoke(Method.java:569)

bladex-iot-server  |    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:258)

bladex-iot-server  |    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:191)

bladex-iot-server  |    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)

bladex-iot-server  |    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991)

bladex-iot-server  |    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896)

bladex-iot-server  |    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

bladex-iot-server  |    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)

bladex-iot-server  |    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)

bladex-iot-server  |    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)

bladex-iot-server  |    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)

bladex-iot-server  |    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:633)

bladex-iot-server  |    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)

bladex-iot-server  |    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:723)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)

bladex-iot-server  |    at org.springblade.core.tool.request.BladeRequestFilter.doFilter(BladeRequestFilter.java:94)

bladex-iot-server  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

bladex-iot-server  |    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)

bladex-iot-server  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

bladex-iot-server  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

bladex-iot-server  |    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)

bladex-iot-server  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

bladex-iot-server  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

bladex-iot-server  |    at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110)

bladex-iot-server  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

bladex-iot-server  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

bladex-iot-server  |    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)

bladex-iot-server  |    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

bladex-iot-server  |    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)

bladex-iot-server  |    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)

bladex-iot-server  |    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)

bladex-iot-server  |    at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)

bladex-iot-server  |    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)

bladex-iot-server  |    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)

bladex-iot-server  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

bladex-iot-server  |    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)

bladex-iot-server  |    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)

bladex-iot-server  |    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)

bladex-iot-server  |    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:75)

bladex-iot-server  |    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)

bladex-iot-server  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

bladex-iot-server  |    at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)

bladex-iot-server  |    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:271)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:130)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletInitialHandler$1.call(ServletInitialHandler.java:127)

bladex-iot-server  |    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)

bladex-iot-server  |    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:251)

bladex-iot-server  |    at io.undertow.servlet.handlers.ServletInitialHandler.lambda$new$1(ServletInitialHandler.java:99)

bladex-iot-server  |    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:395)

bladex-iot-server  |    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:896)

bladex-iot-server  |    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)

bladex-iot-server  |    at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2691)

bladex-iot-server  |    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2670)

bladex-iot-server  |    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1615)

bladex-iot-server  |    at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)

bladex-iot-server  |    at java.base/java.lang.Thread.run(Thread.java:840)

bladex-iot-server  | Caused by: java.sql.SQLException: TDengine ERROR (0x2603): sql: SELECT COUNT(*)

bladex-iot-server  | FROM `device_property_jkerjk97oub_bg6tb5vdls4d05gz`

bladex-iot-server  | WHERE 1 = 1, desc: Fail to get table info, error: Table does not exist

bladex-iot-server  |    at com.taosdata.jdbc.TSDBError.createSQLException(TSDBError.java:95)

bladex-iot-server  |    at com.taosdata.jdbc.rs.RestfulStatement.execute(RestfulStatement.java:98)

bladex-iot-server  |    at com.taosdata.jdbc.rs.RestfulStatement.execute(RestfulStatement.java:78)

bladex-iot-server  |    at com.taosdata.jdbc.rs.RestfulStatement.executeQuery(RestfulStatement.java:39)

bladex-iot-server  |    at com.alibaba.druid.pool.DruidPooledStatement.executeQuery(DruidPooledStatement.java:300)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:463)

bladex-iot-server  |    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:393)

bladex-iot-server  |    ... 90 common frames omitted

bladex-iot-server  | 

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


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


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


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

1条回答
  • 用物联网刚刚发布的最新版本试试看, 然后把tdengine已存在的几个超级表都删掉,再重新发布一个产品,再用这个产品下的设备进行模拟上报看看效果。


    如果最新版本也不行,请录制最新版物联网的操作视频,需要展示的内容如下:

     1. 打开tdengine展示所有超级表均已删除

     2. 进入产品进行物模型发布操作,然后刷新tdengine界面查看超级表是否创建

     3. 进入设备模拟器,选择刚刚发布的产品下的一个设备,同时清空后端控制台日志,点击上报一条数据后,刷新tdengine界面查看产品超级表下的设备表是否创建

     4. 如果没有创建,则把后端刚刷新的控制台日志保存到txt文档,然后再把录制的视频一起发到我们的邮箱 bladejava@qq.com ,我们会安排进行排查

    0 讨论(0)
提交回复