[FAQ] DM 同步报错 Error 8200: Unsupported multi schema change

问题现象

DM 版本: v1.0.6
上游执行单个 DDL 语句内添加多个字段的语句,通过 DM 同步到 TiDB 的时候报错

                                "error": {
                                    "ErrCode": 10006,
                                    "ErrClass": 1,
                                    "ErrScope": 2,
                                    "ErrLevel": 3,
                                    "Message": "execute statement failed: ALTER TABLE xxxxx ADD COLUMN xxxxxx   Error 8200: Unsupported multi schema change",
                                    "RawCause": "Error 8200: Unsupported multi schema change"
                                }
                            },

问题描述

DM 会尝试将包含多个 DDL 变更操作的单条语句拆分成只包含一个 DDL 操作的多条语句,但是可能没有覆盖所有的场景。
目前支持拆分的语句类型包括:drop table/rename table/alter table
https://github.com/pingcap/dm/blob/v2.0.1/pkg/parser/common.go#L173

对于以下这种形式的 alter table 语句会进行拆分

alter table table_name
add t1 xxx,
add t2 xxx,
add t3 xxx;

但是在 v2.0.1 之前版本对于以下这种 alter 语句不会进行拆分,会直接发送给下游 TiDB ,目前 TiDB 不支持单个 DDL 语句修改多个字段的操作,所以会报错

alter table table_name
add column
(t1 xxx,
t2 xxx,
t3 xxx;

解决方案

参考 处理出错的 DDL 语句 文档跳过该报错 DDL ,手动在下游分别执行 DDL。