记录在Oracle数据迁移至DM后,创建唯一约束报错问题。明明在Oracle中唯一约束能够正常创建,到了达梦就不行,到底什么原因呢。

实验开始:
1.首先创建表test,并插入几条数据,脚本如下:
create table test(c1 varchar(20));

insert into test values(‘张三’);
insert into test values(‘张三 ‘);
insert into test values(’ 张三’);
insert into test values(‘李四’);
insert into test values(‘王五’);
commit;

2.创建唯一约束
在这里插入图片描述

可以看到唯一约束创建失败。

3.分析问题
在实际迁移中,遇到这个问题可能第一反应是存在重复值,然后通过group by去排查,然后发现没有重复值,是不是怀疑人生?
在这里插入图片描述
这种情况可能是由于字段某些值的末尾存在空格导致。如第二条insert中空格。

4.解决问题
解决这个问题只能在初始化数据库时将空格填充模式设为与 oracle 一致。
在这里插入图片描述

在新创建的实例中,再次创建表test。
在这里插入图片描述
再次创建唯一性约束成功。
在这里插入图片描述
所以在需要迁移数据时,先确认源库是否存在该问题,不然的话达梦就需要重新初始化了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐