【 TiDB 使用环境】
【概述】 场景 + 问题概述
[2022/03/08 17:53:01.550 +08:00] [INFO] [] ["SchemaBuilder: Creating table report(60).rep_comp_sales_ss_daily20220315(1078) with statement: CREATE TABLE db_60
.t_1078
(cday
MyDate, orgshowname
String 。。。。。。。。。。
[2022/03/08 17:50:38.112 +08:00] [ERROR] [] [“SchemaSyncService: DB::SchemaSyncService::SchemaSyncService(DB::Context&)::<lambda()>: Sync schemas failed by Syntax error: Not a valid integer: 0.00”] [thread_id=24]
请问该如何消除?
【背景】 做过哪些操作
这个表成功创建在好多天前,今天检查日志发现TIFLASH 一直在刷这个错误
这问题感觉有点低级,也没有单独的TIFLASH 运维命令,可以解决眼前问题。TIDB能通过的DDL,在TIFLASH这边却做不到兼容。但至少要有简单命令方便跳过,或修正也是OK的,然而好像并没有。
应该是业务上创建了一个 int/tinyint/smallint/mediumint/bigint 类型的列,但是默认值指定了 “0.00”,导致 tiflash 启动时报错了。
在 6.1.0 版本上提高了对这样默认值的兼容性处理(https://github.com/pingcap/tiflash/issues/3157 ,https://github.com/pingcap/tidb/issues/34881),如果升级到 6.1.0 版本可以不做更改的情况下启动。但是之前的版本需要 drop 掉导致问题的表后,以 “0” 为默认值重新建表,tiflash 才能顺利启动。
tiflash 目前是需要跟 tidb 做到同样的 schema 后,才能提供读服务的。ddl 出现问题,属于意料之外需要 fix 的 bug。暂时没有通用的在 tiflash 端跳过 ddl 的手段。
Syntax error: Not a valid integer: 0.00”] [thread_id=24],在KV可以,在TiFash上不兼容?
旧版本 tiflash 中对整型列,但是默认值是浮点数的代码处理逻辑有问题。新版本中修复了。详细可以见上面的 issue 哈