在做一个移植的时候报错,违反唯一性约束,检查表结构发现只有主键才有唯一性约束,但是表结构是从oracle直接移植过来到达梦数据库上面的,主键不会出现相同的值,怎么会报错违反唯一性约束呢?检查数据发现是主键字段数据末尾含有空格导致的。
比如在oracle新建一个test表,字段C1作为主键 ,如下:
插入数据时可以这样写:
INSERT INTO TEST VALUES('A','1')
INSERT INTO TEST VALUES('A ','1')
INSERT INTO TEST VALUES(' A','1')
这样都能顺利插入表中而不违反主键的约束,但是达梦数据库默认会去掉数据末尾的空格,违反唯一约束性。
解决办法:
修改dm.ini配置文件设置BLANK_PAD_MODE=1即可兼容这一问题。