LKLK
(Lklk)
1
线上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 获取。
db_user
(Db User)
2
下游表结构可以改么,在下游增加一个允许为空的字段,看看能否解决
如果上游是rds,也可以在rds侧设置不用隐式主键
LKLK
(Lklk)
3
现在是下游表比上游表多了一个字段,上游表是自建的mysql
db_user
(Db User)
4
抱歉,没看清楚,可以给一张可复现的表结构么,上游和下游的表结构都是什么样的
您是合库合表的场景,也就是说上游有不止一张相同结构的表。但是 operate-schema 只会设置您指定的源(pay-replica-01)的指定库(snspaycenter)的指定表(t_order_2018)。
当解析别的表的 binlog 的时候还是需要再次设置。不知道是不是这个原因呢?
注意对比上下游的表结构。如果上游是使用一些类似阿里云的rdb这样的数据库要是表没有主键会有一个隐藏主键,这也可能出现这种异常的发生