dimp导入时提示违法唯一约束
用户将生产环境导入测试环境时,有个表无法导入,提示违法唯一约束,错误截图如下
查看主键
根据主键查下是否有重复数据
其他参数如:COMPATIBLE_MODE,大小写是否敏感,字符集类型,数据页大小源端和目的端都一致,采取主键冲突的处理方式[IGNORE|OVERWRITE|OVERWRITE2],及需要的导入表在目标库中存在时采取的操作[SKIP | APPEND | TRUNCATE | REPLACE] 等尝试依旧报错。最后发现是源端和目的端字符串结尾空格填充参数BLANK_PAD_MODE不一致导致
问题复现
初始化两个实例,一个设置字符串结尾空格填充参数设置为兼容Oracle
./dminit path=/data page_size=32 db_name=dmdb PORT_NUM=5237 BLANK_PAD_MODE=1
./dminit path=/data page_size=32
--创建一个表test,字段a1,a2,a3 组成联合主键
create table test(a1 varchar(10),a2 varchar(10),a3 varchar(10) ,primary key(a1,a2,a3));
--插入如下数据
insert into test values ('111','111','111');
insert into test values ('111','222','222');
insert into test values ('111','222 ','222');
insert into test values ('111','222','333');
commit;
使用dexp将表test导出
将上面导入的test表导入到另外一个数据库上面