为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:我从Oracle数据将数据迁移到达梦数据库的时候报了唯一约束的错误,但是我需要迁移的表在达梦数据库是没有数据的,在Oracle数据库是有数据的
检查表是否存在触发器
建议:在DTS迁移时,先只迁移表定义,然后再迁移数据,最后再迁移表约束信息。这样便于处理可能出现的错误。
原因分析:可能情况迁移目的库DM中表的约束已经存在,而迁移的数据恰不符合唯一约束条件,导致数据迁移失败。
可以排查下oracle中该表的唯一约束,是否唯一,其次oracle多个NULL空值的存在是不违反唯一约束的,但是在DM中是违反的.
从oracle迁移数据到达梦报唯一约束的错误,存在多种可能,最常见的有一下几种,可以参考进行排查:
1.达梦数据库设置的大小写不敏感,oracle是大小写敏感的,如果有a和A之类只有大小写差别的值,迁到设置了大小写不敏感的达梦数据库,由于忽略了大小写会认为是同一个值,因此会报违反唯一约束;
2.COMPATIBLE_MODE参数未配置为2(oracle兼容),在oracle中存在多个’‘空值,而在达梦中COMPATIBLE_MODE为0(默认)时,多个’'是同一个值;
3.参数BLANK_PAD_MODE(空格填充模式)是0(默认)时,'a’和’a空格’是同一条,值为1的时,'a’和’a空格’不是同一个值;
是使用dts迁移工具迁移的吗,表定义迁移成功没