DM同步报错:"[ddl:1071]Specified key was too long; max key length is 3072 bytes"

【 TiDB 使用环境】·预生产环境
【 TiDB 版本】v5.4.0
【遇到的问题】
DM同步数据报下图错误:通过tiup cluster edit-config修改 max-index-length参数还是报这个错误,修改的值貌似没有生效!


【复现路径】做过哪些操作出现的问题
【问题现象及影响】

【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
    image
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

show config where name like '%max-index-length%';
看看是否设置成功

1 个赞

应该是 tidb 集群的 max-index-length 没有配置好,导致同步 ddl 的时候报错

1 个赞

修改后reload没?

查了一下,设置成功了,但还是报这个错误。我想是不是character_set_server=‘utf8mb4’影响的,但是我执行SET GLOBAL character_set_server=‘utf8’,确不生效

reload了

已经生效了

SET GLOBAL character_set_server=‘utf8’,set后重连看下

character_set_server代表新建表不指定字符集时的默认字符集,不会对已有的表产生影响。

但是我执行show variables like '%char%'不论是新开会话还是现在的会话
显示的还是不成功

重连了,还是不行。

我这个表建表时已经指定了,字符集是utf8了

表结构能提供下吗,我测试下,可以脱敏下。

这是上游mysql的:
CREATE TABLE zq_leads (
id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键id’,
sys_id varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘scrm系统id’,
name varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘线索名称’,
member_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘会员id’,
sales_user_id varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘企业微信外部联系人id’,
type tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘线索类型(1.模块内部创建 2.scrm会员推送 3.明师定制BOSS系统推送 11.接口创建)’,
source_type tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘线索来源类型(1.zq_leads_source表id),2.外部来源(string))’,
source varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘线索来源’,
source_pid int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘线索一级来源’,
status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘当前线索挖掘状态(-1.删除,0.禁用(关闭),1.正常(未分派),2.跟进中,3.丢单,4.成单,5.释放,6.已分派)’,
group_id int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘用户组id’,
assignment_uid int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘分配人员id’,
assignment_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘分配时间’,
level int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘评级’,
point int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘分值’,
third_party_id varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘第三方id’,
push_boss_status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘明师定制:推送boss状态 1=已推送 0=未推送’,
creator int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘创建者’,
create_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘创建时间’,
modifier int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘修改者’,
modify_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘修改时间’,
remark varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘备注’,
extra varchar(1000) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘额外信息,依具体情况使用’,
push_status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘推送状态 0=未推送 1=推送成功 2=推送失败’,
ikcrm_leadid int(11) NOT NULL DEFAULT ‘0’,
ikcrm_customerid int(11) NOT NULL DEFAULT ‘0’,
inviter varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘邀请人’,
inviter_dept varchar(11) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘邀请人部门’,
inviter_mobile varchar(11) CHARACTER SET utf8 NOT NULL DEFAULT ‘’ COMMENT ‘邀请人手机号’,
company_id int(10) DEFAULT ‘0’ COMMENT ‘线索关联企业ID’,
last_follow_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘最后跟进时间’,
next_follow_time int(11) NOT NULL COMMENT ‘下次跟进时间’,
phase tinyint(4) NOT NULL DEFAULT ‘1’ COMMENT ‘阶段’,
phase_status tinyint(4) NOT NULL DEFAULT ‘1’ COMMENT ‘阶段状态’,
phase_uptime int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘阶段修改时间’,
belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘当前归属人’,
belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘所属人部门’,
raw_belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘raw阶段归属人’,
mql_belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘mql阶段归属人’,
raw_belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘raw阶段归属人部门’,
mql_belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘mql阶段归属人部门’,
last_follow_type int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘最后一次跟进方式’,
last_allot_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘最后一次分派时间’,
mql_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘线索转出时间’,
sql_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘线索接收时间’,
PRIMARY KEY (id),
KEY point (point),
KEY third_party_id (third_party_id) USING BTREE,
KEY sys_id (sys_id,name,type,source_type,source,status,creator,modifier,group_id) USING BTREE,
KEY status (status,name,type,source_type,source,creator,modifier,sys_id,group_id) USING BTREE,
KEY member_id (member_id) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12619310 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘销售线索表’;
这是tidb的:
CREATE TABLE zq_leads (
id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键id’,
sys_id varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘scrm系统id’,
name varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘线索名称’,
member_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘会员id’,
sales_user_id varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘企业微信外部联系人id’,
type tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘线索类型(1.模块内部创建 2.scrm会员推送 3.明师定制BOSS系统推送 11.接口创建)’,
source_type tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘线索来源类型(1.zq_leads_source表id),2.外部来源(string))’,
source varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘线索来源’,
source_pid int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘线索一级来源’,
status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘当前线索挖掘状态(-1.删除,0.禁用(关闭),1.正常(未分派),2.跟进中,3.丢单,4.成单,5.释放,6.已分派)’,
group_id int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘用户组id’,
assignment_uid int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘分配人员id’,
assignment_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘分配时间’,
level int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘评级’,
point int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘分值’,
third_party_id varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘第三方id’,
push_boss_status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘明师定制:推送boss状态 1=已推送 0=未推送’,
creator int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘创建者’,
create_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘创建时间’,
modifier int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘修改者’,
modify_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘修改时间’,
remark varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘备注’,
extra varchar(1000) NOT NULL DEFAULT ‘’ COMMENT ‘额外信息,依具体情况使用’,
push_status tinyint(3) NOT NULL DEFAULT ‘0’ COMMENT ‘推送状态 0=未推送 1=推送成功 2=推送失败’,
ikcrm_leadid int(11) NOT NULL DEFAULT ‘0’,
ikcrm_customerid int(11) NOT NULL DEFAULT ‘0’,
inviter varchar(255) NOT NULL DEFAULT ‘’ COMMENT ‘邀请人’,
inviter_dept varchar(11) NOT NULL DEFAULT ‘’ COMMENT ‘邀请人部门’,
inviter_mobile varchar(11) NOT NULL DEFAULT ‘’ COMMENT ‘邀请人手机号’,
company_id int(10) DEFAULT ‘0’ COMMENT ‘线索关联企业ID’,
last_follow_time int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘最后跟进时间’,
next_follow_time int(11) NOT NULL COMMENT ‘下次跟进时间’,
phase tinyint(4) NOT NULL DEFAULT ‘1’ COMMENT ‘阶段’,
phase_status tinyint(4) NOT NULL DEFAULT ‘1’ COMMENT ‘阶段状态’,
phase_uptime int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘阶段修改时间’,
belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘当前归属人’,
belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘所属人部门’,
raw_belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘raw阶段归属人’,
mql_belonger int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘mql阶段归属人’,
raw_belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘raw阶段归属人部门’,
mql_belonger_branches int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘mql阶段归属人部门’,
last_follow_type int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘最后一次跟进方式’,
last_allot_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘最后一次分派时间’,
mql_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘线索转出时间’,
sql_time int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘线索接收时间’,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */,
KEY point (point),
KEY third_party_id (third_party_id),
KEY sys_id (sys_id,name,type,source_type,source,status,creator,modifier,group_id),
KEY status (status,name,type,source_type,source,creator,modifier,sys_id,group_id),
KEY member_id (member_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=12649174 COMMENT=‘销售线索表’;

show config where name like ‘%max-index-length%’

这个执行完显示修改成功了

我试了下直接创建表是成功的。

我这边也是能创建成功的,但是dm同步时确报了这个错误!也不知道为什么:joy:

emmmm 能发一下 dm 的版本号吗?或许是 dm schema tracker 有问题:sob:

tidb v5.4.0 dm v5.4.0

1 个赞