开发者社区 > 数据库 > 关系型数据库 > 正文

解析RDS出错:com.alibaba.otter.canal.parse.exception.Ca

com.alibaba.otter.canal.parse.exception.CanalParseException: column size is not match for table

代码在这里报错:

        EntryPosition position = createPosition(event.getHeader());
        if (!existRDSNoPrimaryKey) {
            // online ddl增加字段操作步骤:
            // 1. 新增一张临时表,将需要做ddl表的数据全量导入
            // 2. 在老表上建立I/U/D的trigger,增量的将数据插入到临时表
            // 3. 锁住应用请求,将临时表rename为老表的名字,完成增加字段的操作
            // 尝试做一次reload,可能因为ddl没有正确解析,或者使用了类似online ddl的操作
            // 因为online ddl没有对应表名的alter语法,所以不会有clear cache的操作
            tableMeta = getTableMeta(event.getTable().getDbName(), event.getTable().getTableName(), false, position);// 强制重新获取一次
            if (tableMeta == null) {
                tableError = true;
                if (!filterTableError) {
                    throw new CanalParseException("not found [" + event.getTable().getDbName() + "."
                                                  + event.getTable().getTableName() + "] in db , pls check!");
                }
            }

            // 在做一次判断
            if (tableMeta != null && columnInfo.length > tableMeta.getFields().size()) {
                tableError = true;
                if (!filterTableError) {
                    throw new CanalParseException("column size is not match for table:" + tableMeta.getFullName()
                                                  + "," + columnInfo.length + " vs " + tableMeta.getFields().size());
                }
            }

原提问者GitHub用户YuanWeiKang

展开
收起
数据大拿 2023-05-04 10:37:01 165 0
1 条回答
写回答
取消 提交回答
  • 参考wiki:https://github.com/alibaba/canal/wiki/TableMetaTSDB

    原回答者GitHub用户YuanWeiKang

    2023-05-04 18:10:09
    赞同 展开评论 打赏

阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。

相关产品

  • 云数据库 RDS MySQL 版
  • 云数据库 RDS
  • 相关电子书

    更多
    神龙云服务器产品及技术深度解析 立即下载
    弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
    又快又稳:阿里云下一代虚拟交换机解析 立即下载

    相关镜像