使用tiflash执行sql语句

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.3
【复现路径】执行sql出现错误,一直这个错误,然后去掉TiFlash就执行正常

select * from if_user_installreferrer limit 100

1105 - other error for mpp stream: From MPPquery:442333193923723265:2,task: Code: 49, e.displayText() = DB::Exception: Check schema[i].type->equals(*storage_schema[i].type) failed, schema[i].name = table_scan_23, schema[i].type->getName() = Nullable(MyDateTime(3)), storage_schema[i].name = remarketingtime, storage_schema[i].type->getName() = Nullable(MyDateTime(0)), e.what() = DB::Exception,
时间: 10.03s

【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

你有几个tiflash节点,节点状态都正常吗?

去掉TiFlash重新加一下试试

“remarketingtime” 列的类型在两者之间不相同

这个原因是什么?这个字段是DateTime类型,tiflash我们也不能手动配置啊

2个节点. 看没用什么问题啊.就是 从 6.1.5 升级到 6.5.3 发现这个毛病

你是指卸载tiflash重新添加,还是表去掉tiflash再添加?

1105 - other error for mpp stream: From MPPquery:442341727299961673:8,task: Code: 49, e.displayText() = DB::Exception: Check schema[i].type->equals(*storage_schema[i].type) failed, schema[i].name = table_scan_9, schema[i].type->getName() = Nullable(MyDateTime(3)), storage_schema[i].name = remarketingtime, storage_schema[i].type->getName() = Nullable(MyDateTime(0)), e.what() = DB::Exception,

卸载tiflash重新添加,也不麻烦

马上试试

多谢老哥,果然是要卸载tiflash重装
这个挺麻烦的,因为我太多东西使用TiFlash重新加载了一次所有的tiflash数花了几个小时

搞定了就好

@Billmay表妹 这算是BUG么,是否需要找专家看看?

昨天集群从 6.1.5 升级到 6.5.3, 提示是升级成功了但是升级完后,基本这个集群崩了一样
到现在都是各种问题,非常麻烦,集群数据有 几十个T
现在查询性能只有原来不到一半的感觉,但是kv的io,内存,CPU都很正常. 使用率都不高
现在写入也是巨慢,各种不正常
然后TiFlash这个问题,还好楼上老哥提醒了一下,重装一开始上了俩节点,结果上去就不正常
现在是只敢用一个TiFlash,跑的还算正常
那个提示,怎么看都不像是我们环境那里问题,居然重新安装就可以 了…
现在不敢乱动,好歹tiflash已经能用了

1 个赞

论坛看案例,升级tidb tiflash挺容易出问题的

学习了

https://github.com/pingcap/tiflash/issues/6806
这里有一个类似的 issue
可以改 tiflash 的 config 里 profiles.default.enable_planner 为 0 看看能不能解决。

顺便问一下,那个报错的字段有改过字段类型吗?

重装能解决问题,就可以估计跟业务无关了
这个纯粹就是TiFlash的问题 …

https://github.com/pingcap/tiflash/issues/7809

确认是一个 DATETIME/TIMESTAMP/TIME 类型的列精度 (fsp) 被 DDL 语句修改之后,可能导致 TiFlash 查询报错的 bug。因为这个检查是在 v6.5 才加上的,所以从旧版本升级到当下的 6.5 和 7.1 版本也可能受影响,导致之前能运行的 SQL 在新版本中报错。

暂时可以通过以下几种方式 workaround:

  1. 在原表上以正确的类型创建新的列;使用 UPDATE table_name SET ... 语句将旧列的值拷贝到新的列中;再 drop 旧的列
  2. 以正确的类型创建新的表;将旧表的行插入到新表中;再 drop 旧表

或者等待下一个包含修复的 patch 版本出来后,升级到新版本即可~

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。