DM 合并以后同步报错: Column count doesn't match value count: 27 (columns) vs 26 (values)"

线上V5.4.1版本,上游mysql 多张按年建的表(表结构都一样,26个字段),通过DM 合并到下游一张总表(多了一个字段,是隐式主键id 设置了AUTO_RANDOM),同步时候报Column count doesn’t match value count: 27 (columns) vs 26 (values)",手动通过命令tiup dmctl --master-addr xxxx operate-schema set -s pay-replica-01 pay -d snspaycenter -t t_order_2018 snspaycenter.t_order_2018-schema.sql, 指定与 binlog event 匹配的表结构。 但报错还会是不是出现。。还需要重复执行上述命令来修复。。请问有什么办法一次性修复这类报错?

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

下游表结构可以改么,在下游增加一个允许为空的字段,看看能否解决

如果上游是rds,也可以在rds侧设置不用隐式主键

现在是下游表比上游表多了一个字段,上游表是自建的mysql

抱歉,没看清楚,可以给一张可复现的表结构么,上游和下游的表结构都是什么样的

您是合库合表的场景,也就是说上游有不止一张相同结构的表。但是 operate-schema 只会设置您指定的源(pay-replica-01)的指定库(snspaycenter)的指定表(t_order_2018)。

当解析别的表的 binlog 的时候还是需要再次设置。不知道是不是这个原因呢?

注意对比上下游的表结构。如果上游是使用一些类似阿里云的rdb这样的数据库要是表没有主键会有一个隐藏主键,这也可能出现这种异常的发生