eventData after viewExtractor has no pks , pls check异常 源表和目标表在同一阿里云RDS实例上,只是不同的库,源库的表只同步一部分字段到目标库的表,目标表是一个新建的表,只有表结构,无外键字段,有一个主键字段,其他没什么特别的字段,channel开启之后,显示挂起状态,看同步日志,显示如下:
pid:30 nid:2 exception:setl:com.alibaba.otter.node.etl.extract.exceptions.ExtractException: eventData after viewExtractor has no pks , pls check! identity:Identity[channelId=30,pipelineId=30,processId=4], new eventData:EventData[tableId=152,tableName=customer,schemaName=souche_crm,eventType=UPDATE,executeTime=1566472516000,oldKeys=[],keys=[],columns=[EventColumn[index=37,columnType=93,columnName=date_update,columnValue=2019-08-22 19:15:16,isNull=false,isKey=false,isUpdate=true]],size=523,pairId=-1,sql=,ddlSchemaName=,syncMode=,syncConsistency=,remedy=false,hint=,withoutSchema=false]
这个是什么原因呀,使用自定义的binlog位点也是报这个错误,能帮忙分析一下吗
原提问者Github用户 imcco
这个错误提示是因为同步任务在进行数据提取时,无法找到源表的主键或唯一索引,而同步任务需要使用主键或唯一索引来进行数据的唯一标识和增量同步。
你可以检查源表的主键或唯一索引是否存在,或者是否被正确的配置在同步任务中。如果源表确实没有主键或唯一索引,你可以考虑在源表上添加一个主键或唯一索引,并将其配置到同步任务中。如果你不想在源表上添加主键或唯一索引,你可以使用 Canal 的 rowMode 模式来进行数据同步,该模式可以以全表扫描的方式进行数据同步,但是会对数据库性能产生一定的影响。
另外,你可以检查一下同步任务中的表映射是否正确,或者是否存在配置错误。可以尝试重新创建同步任务,并确保所有配置都是正确的。
源表的主键没有创建到目标表,导致无主键报错,执行了DDL,添加主键字段到目标表,在管道高级设置关闭DDL同步,跳过DDL错误检测,重启channel,同步恢复正常了
原回答者Github用户 imcco
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。