记录在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。
再次创建唯一性约束成功。
所以在需要迁移数据时,先确认源库是否存在该问题,不然的话达梦就需要重新初始化了。