一、该问题的重现步骤是什么?
1. 多次尝试重新发布物模型,且超级表确实创建了
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 |
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
用物联网刚刚发布的最新版本试试看, 然后把tdengine已存在的几个超级表都删掉,再重新发布一个产品,再用这个产品下的设备进行模拟上报看看效果。
如果最新版本也不行,请录制最新版物联网的操作视频,需要展示的内容如下:
1. 打开tdengine展示所有超级表均已删除
2. 进入产品进行物模型发布操作,然后刷新tdengine界面查看超级表是否创建
3. 进入设备模拟器,选择刚刚发布的产品下的一个设备,同时清空后端控制台日志,点击上报一条数据后,刷新tdengine界面查看产品超级表下的设备表是否创建
4. 如果没有创建,则把后端刚刷新的控制台日志保存到txt文档,然后再把录制的视频一起发到我们的邮箱 bladejava@qq.com ,我们会安排进行排查
扫一扫访问 Blade技术社区 移动端