如何解决IBM CDC Replication 获取 SQL 错误代码 1172,SQL 状态 42000
我正在使用 IBM CDC Replication 将数据从 AS400 复制到 MySQL。
来源:AS400 (CDC Engine for DB2 for i)
==> 目标:MySQL (CDC Engine for FlexRep)
然后我用下面的表映射作为镜像复制创建了一个订阅:
source.item
==> target.item
显然,source.item
来自 AS400,而 target.item
来自 MySQL。
target.item
对 COL1
到 COL8
具有唯一键约束。
运行此订阅时,出现以下错误:
Failed to add a row to table target.item. COL1: [IT] COL2: [2] COL3: [T999] COL4: [H203 ] COL5: [ ] COL6: [20180831] COL7: [9999999] COL8: [FPL].
Database operation failed.
A SQL exception has occured. The SQL error code is '1172'. The SQL state is: 42000. The error message is:
Result consisted of more than one row.
起初我想知道源表中是否有重复的记录 COL1='IT' COL2='2' COL3='999' COL4='H203 ' COL5=' ' COL6='20180831' COL7='999999 'COL8='FPL',因为复制重复的键值记录会违反目标中的唯一键约束,但这样的键值在源表中只有一条记录。
还有一点值得一提的是,我们在表映射中有一个派生的列表达式:
NEW_COL ==> %GETCOL(COL_WANTED,"source.lookup","NOT FOUND",DESCRPF,5,COL1,COL2,COL3,COL4,COL5)
基本上,我们试图从 COL_WANTED
中查找 source.lookup
列,其匹配值为 COL1
到 COL5
。
我认为这种“加入/查找”操作可能会产生导致错误的多个结果记录。
但是后来我把这个导出的列表达式拿掉了,还是提示同样的错误。
任何建议将不胜感激。提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。