开发者社区> 问答> 正文

事件数据后视图提取器没有pks,请检查

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

展开
收起
绿子直子 2023-06-16 15:16:54 102 0
2 条回答
写回答
取消 提交回答
  • 这个错误提示是因为同步任务在进行数据提取时,无法找到源表的主键或唯一索引,而同步任务需要使用主键或唯一索引来进行数据的唯一标识和增量同步。

    你可以检查源表的主键或唯一索引是否存在,或者是否被正确的配置在同步任务中。如果源表确实没有主键或唯一索引,你可以考虑在源表上添加一个主键或唯一索引,并将其配置到同步任务中。如果你不想在源表上添加主键或唯一索引,你可以使用 Canal 的 rowMode 模式来进行数据同步,该模式可以以全表扫描的方式进行数据同步,但是会对数据库性能产生一定的影响。

    另外,你可以检查一下同步任务中的表映射是否正确,或者是否存在配置错误。可以尝试重新创建同步任务,并确保所有配置都是正确的。

    2023-06-16 15:33:40
    赞同 展开评论 打赏
  • 源表的主键没有创建到目标表,导致无主键报错,执行了DDL,添加主键字段到目标表,在管道高级设置关闭DDL同步,跳过DDL错误检测,重启channel,同步恢复正常了

    原回答者Github用户 imcco

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

相关电子书

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