删除子表后 写入数据错误

【TDengine 使用环境】
测试

【TDengine 版本】 3.3.6

【操作系统以及版本】 centos7

【部署方式】容器/非容器部署

【集群节点数】3

【集群副本数】2

【描述业务影响】: 数据写入失败,必须重建整个库

【问题复现路径/shan】做过哪些操作出现的问题 :删了子表重测,写入异常提示sql语法错误

【遇到的问题:问题现象及影响】

您有个tdengine问题请教下:
tdengine版本: 3.3.6

我通过 ws 进行数据写入,使用自动创建子表语句,一开始写入正常,sql: INSERT INTO ? USING ebikes TAGS(?,?) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
我想删除子表重新 测试,结果 相同的代码报 sql解析错误: ERROR (0x216): (0x216):syntax error near '? using ebikes tags (?,?) ,删除 超级表 重建超级表也是同样错误,
后面是删除整个库,重建超级表, 可以正常插入数据了

请问为什么要重建整个库 才能正常写入

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

sql: INSERT INTO ? USING ebikes TAGS(?,?) VALUES (?, ?, ?, ?, ?, ?, ?, ?)

请看下日志目录下taosdlog有何ERROR日志。当前信息不足以判断问题原因。

删除子表后,代码无法写入,不会自动创建子表, 如下是系统日志

如下是代码报错:

image

删除 超级表重建也不得,必须删除整个库然后 重启服务才能正常,或者 代码 写表的时候换一个表名 ,写入是正常的,用原来的表名就是不行

td版本: 3.3.6-13

是使用的stmt参数绑定方式吗?

是的 使用 ws方式 批量写入


请在代码中打印下?传入的参数,是不是参数有误?

什么情况下会在插入过程中删除子表?

是手动删除表 重测业务的

另外咨询下: tdengine写入的时间不是 北京时间,这个是要从哪里配置

参数是没问题的,我全部写死常量值的参数 也是报同样的错误 ,所以就觉得很奇怪,

手动删除子表后,为什么再次运行代码会报错,难道 数据表元数据 有问题 ? 必须连数据库一起重建 ,才能用原来的表名

看下子表名是不是会错误,有没有特殊字符。这里报的是语法错误,不是其它的问题。

确定没问题的,一模一样的代码,换个表名,或者 ,删库 重建 库 和 超表,就正常,

明显感觉: 1 .是子表被删除后 元数据在集群同步有问题,导致 程序 插表失败

         2. 错误提示不对,明明元数据有问题,提示 sql语法错误, 之前遇到好几个也是,错误提示
         跟真实问题完全不匹配,动不动就提示语法问题


         3. 现在的问题是:假如生产上遇到 改表或者 删了子表,就必须重建整个库 才能用,这代价太大了 

特殊字符绝对没有