这是使用阿里云rds当做上游mysql进行同步的掉坑系列分享 第一篇
(rds真是留了太多隐藏坑了,内牛满面)
dm在同步的时候会出现如下错误
"errors": [
{
"Type": "UnknownError",
"msg": "[省略.....
gen insert sqls failed, schema: ****, table: ****:
Column count doesn't match value count: 5 (columns) vs 6 (values)\
主要错误就是同步的时候,发现字段不一致.
一般这时候会去比对上游mysql的字段与下游是否一致.
比对完后,发现是一致.只是这个表没有建立主键
而已.
此时,坑来了
rds会检测这个表,如果没有主键,会自动生成一个隐藏主键
执行命令
set show_ipk_info=1;
show create table 表名;
表结构就会像下面这个样子
CREATE TABLE `user_record` (
省略。。。
省略。。。
`__#alibaba_rds_row_id#__` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Implicit Primary Key by RDS',
KEY `__#alibaba_rds_row_id#__` (`__#alibaba_rds_row_id#__`),
省略。。。
省略。。。
) 省略。。。
到这里你就能知道,为什么因为字段不一致,dm无法同步了.
因为坑爹rds,有个隐藏字段.
这时候,你手动加个主键也不行,隐藏主键不会消失.
只能无奈的,在下游也建一个对应的__#alibaba_rds_row_id#__
字段,来委曲求全.