开发者社区> 问答> 正文

canal server启动时对uniquekey报错compare failed

2018-02-25 10:23:39.643 [destination = example , address = rds9h7gi6v2fo2og5202.mysql.rds.aliyuncs.com/100.98.57.68:3306 , EventParser] ERROR c.a.o.canal.parse.inbound.mysql.tsdb.DatabaseTableMeta - pls submit github issue, show create table ddl:CREATE TABLE center_institution_admin ( id bigint(20) NOT NULL AUTO_INCREMENT, account varchar(20) NOT NULL COMMENT '账号', cinst_id bigint(20) NOT NULL COMMENT '机构id', status int(11) DEFAULT '1' COMMENT '0:关闭,1:开启', gmt_create datetime DEFAULT CURRENT_TIMESTAMP, gmt_modify datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, name varchar(50) DEFAULT NULL COMMENT '账号角色名称', parent_id bigint(20) NOT NULL DEFAULT '0' COMMENT '父账号ID', permissions varchar(500) DEFAULT '0' COMMENT '账号权限码', remark varchar(256) DEFAULT NULL, default_account int(11) DEFAULT '0', PRIMARY KEY (id), UNIQUE KEY inst_account_unique_index (cinst_id,account), KEY parent_id_index (parent_id), KEY center_institution_admin_account_index (account) ) ENGINE=InnoDB AUTO_INCREMENT=967573674662035553 DEFAULT CHARSET=utf8 COMMENT='中心机构管理账号表' , compare failed . db : TableMeta [schema=xiaomai, table=center_institution_admin, fileds= FieldMeta [columnName=id, columnType=bigint(20), nullable=false, key=true, defaultValue=null, extra=auto_increment, unique=false] FieldMeta [columnName=account, columnType=varchar(20), nullable=false, key=false, defaultValue=null, extra=, unique=false] FieldMeta [columnName=cinst_id, columnType=bigint(20), nullable=false, key=false, defaultValue=null, extra=, unique=false] FieldMeta [columnName=status, columnType=int(11), nullable=true, key=false, defaultValue=1, extra=, unique=false] FieldMeta [columnName=gmt_create, columnType=datetime, nullable=true, key=false, defaultValue=CURRENT_TIMESTAMP, extra=, unique=false] FieldMeta [columnName=gmt_modify, columnType=datetime, nullable=true, key=false, defaultValue=CURRENT_TIMESTAMP, extra=on update CURRENT_TIMESTAMP, unique=false] FieldMeta [columnName=name, columnType=varchar(50), nullable=true, key=false, defaultValue=null, extra=, unique=false] FieldMeta [columnName=parent_id, columnType=bigint(20), nullable=false, key=false, defaultValue=0, extra=, unique=false] FieldMeta [columnName=permissions, columnType=varchar(500), nullable=true, key=false, defaultValue=0, extra=, unique=false] FieldMeta [columnName=remark, columnType=varchar(256), nullable=true, key=false, defaultValue=null, extra=, unique=false] FieldMeta [columnName=default_account, columnType=int(11), nullable=true, key=false, defaultValue=0, extra=, unique=false] ] mem : TableMeta [schema=xiaomai, table=center_institution_admin, fileds= FieldMeta [columnName=id, columnType=bigint(20), nullable=false, key=true, defaultValue=null, extra=null, unique=false] FieldMeta [columnName=account, columnType=varchar(20), nullable=false, key=false, defaultValue=null, extra=null, unique=true] FieldMeta [columnName=cinst_id, columnType=bigint(20), nullable=false, key=false, defaultValue=null, extra=null, unique=true] FieldMeta [columnName=status, columnType=int(11), nullable=true, key=false, defaultValue=1, extra=null, unique=false] FieldMeta [columnName=gmt_create, columnType=datetime, nullable=true, key=false, defaultValue=CURRENT_TIMESTAMP, extra=null, unique=false] FieldMeta [columnName=gmt_modify, columnType=datetime, nullable=true, key=false, defaultValue=CURRENT_TIMESTAMP, extra=null, unique=false] FieldMeta [columnName=name, columnType=varchar(50), nullable=true, key=false, defaultValue=null, extra=null, unique=false] FieldMeta [columnName=parent_id, columnType=bigint(20), nullable=false, key=false, defaultValue=0, extra=null, unique=false] FieldMeta [columnName=permissions, columnType=varchar(500), nullable=true, key=false, defaultValue=0, extra=null, unique=false] FieldMeta [columnName=remark, columnType=varchar(256), nullable=true, key=false, defaultValue=null, extra=null, unique=false] FieldMeta [columnName=default_account, columnType=int(11), nullable=true, key=false, defaultValue=0, extra=null, unique=false] ]

使用的是目前master分支最新代码,#507 的问题似乎没有解决.

测试表中UK是一个联合索引(cinst_id,account),因此在单独field上的unique标志应该为false,但mem中的数据对于单独field也为true

原提问者GitHub用户bailaohe

展开
收起
绿子直子 2023-05-09 10:52:14 95 0
1 条回答
写回答
取消 提交回答
  • 通过desc table这样的方式,获取uk时针对多列情况会出现MUL的列,导致无法精确获取对应的uk列。修复的方式使用show create table进行完整解析

    原回答者GitHub用户agapple

    2023-05-10 10:15:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载