注册
达梦数据库-错误码-[-6612]-分析处理
技术分享/ 文章详情 /

达梦数据库-错误码-[-6612]-分析处理

PYZ 2024/11/22 1642 2 0

错误码:-6612
错误内容:违反唯一性约束

原因:

1、字面意思,当字段中存在主键/唯一约束/唯一索引时,插入重复数据会违反唯一性约束;
2、插入的字符串数据末尾存在空格,当初始化参数BLANK_PAD_MODE=0时,将不会对字符串末尾的空格进行比较

参数BLANK_PAD_MODE详解:
设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。1:兼容;0:不兼容,缺省值为0。注意:此参数在数据库创建成功后无法修改。

--查询参数 select * from v$parameter where name='BLANK_PAD_MODE';

示例:

--当BLANK_PAD_MODE=0,末尾带空格的数据将被识别为相同数据 create table test1(id int,name varchar(20)); insert into test1 values(1,'A'); insert into test1 values(2,'A '); commit; --此时创建唯一索引会报-6612 create unique index u_idx_test1_01 on test1(name); -6612: 违反唯一性约束

问题处理:

--通过rtrim函数截断末尾空格排查统计重复数据 select rname,count(*) from (select rtrim(name,' ') as rname from test1) group by rname order by 2 desc; --通过length函数返回给定字符串表达式的字符个数 select name,length(name) len from test1 order by name --如果需要保证数据的一致性,需要重建数据库实例,将参数BLANK_PAD_MODE设为1,此时末尾带空格的字符数据将被识别为不同数据。 --初始化示例: dminit PATH=/dmdata PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 CHARSET=1 CASE_SENSITIVE=1 DB_NAME=DMDB INSTANCE_NAME=DMSERVER BLANK_PAD_MODE=1
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服