database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 6254 게시물 읽기
No. 6254
ERROR: duplicate key violates unique constraint "pk_test"
작성자
김남일
작성일
2005-08-09 00:32ⓒ
2005-08-09 00:33ⓜ
조회수
2,897

아래처럼 하면 중복키 오류가 나는데 버그일까요?

ver: PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)

 

CREATE TABLE test
(
docno char(10) NOT NULL,
name char(10) NOT NULL,
CONSTRAINT pk_test PRIMARY KEY (docno, name)
)
WITHOUT OIDS;
ALTER TABLE test OWNER TO postgres;

 

insert into test values('00001', '홍길동');

insert into test values('00001', '장길산');

select * from test;

이 글에 대한 댓글이 총 5건 있습니다.

저는 잘 되는데요.

 

pcrm_up=# create table test (

pcrm_up(# docno char(10) not null,

pcrm_up(# name char(10) not null

pcrm_up(# ) without oids;

CREATE TABLE

pcrm_up=# insert into test values('00001', '홍길동');

INSERT 0 1

pcrm_up=# insert into test values('00001', '장길산');

INSERT 0 1

pcrm_up=# select * from test;

docno | name

------------+---------------

00001 | 홍길동

00001 | 장길산

(2 rows)

 

한글 관련 설정에 문제가 있지 않을까요?

먼저 client encoding 점검 해 보세요. 제 생각에는 encoding이 안 맞아서 name 항목이 빈칸으로 등록 되었거나 한 것 같아보이는데요.

박성철(gyumee)님이 2005-08-09 09:50에 작성한 댓글입니다.
이 댓글은 2005-08-09 09:55에 마지막으로 수정되었습니다.

1. primary key 지정하신건가요?

2. client encoding 를 어떻게 하신건지요?

'uhc'로 설정하고 해도 같은 현상인데,,, 제가 뭔가를 착각한거 같기도 하고요.

 

[postgres@mail0 postgres]$ psql maildb
Welcome to psql 8.0.2, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

maildb=# insert into test values('00001', '홍길동');
INSERT 0 1
maildb=#
maildb=# insert into test values('00001', '장길산');
INSERT 0 1
maildb=#
maildb=# select * from test;
   docno    |    name   
------------+------------
 00001      | 홍役?     
 00001      |       
(2 rows)

maildb=# SET CLIENT_ENCODING TO 'uhc';
SET
maildb=# select * from test;
WARNING:  ignoring unconvertible UTF-8 character 0xc8ab
WARNING:  ignoring unconvertible UTF-8 character 0xc0e5
WARNING:  ignoring unconvertible UTF-8 character 0xe6bbea
   docno    |    name   
------------+------------
 00001      | 깡?     
 00001      | ?     
(2 rows)

maildb=# delete from test;
DELETE 2
maildb=#  insert into test values('00001', '홍길동');
INSERT 0 1
maildb=#  insert into test values('00001', '장길산');
ERROR:  duplicate key violates unique constraint "pk_test"
maildb=# select * from test;
   docno    |     name     
------------+---------------
 00001      | 홍길동      
(1 row)

maildb=#

nikim님이 2005-08-09 13:08에 작성한 댓글입니다.
이 댓글은 2005-08-09 13:53에 마지막으로 수정되었습니다. Edit

엄... 희안하네요.

보아하니 DB의 문자셋은 unicode인 것 같은데... client encoding을 바로 해 줬더니 그런 문제가 생기네요.

한글만 그런가요? 영어는 이상 없구요?

만약 그렇다면 진짜 모를 일이네요. 쩝....

 

박성철(gyumee)님이 2005-08-09 19:06에 작성한 댓글입니다.

네. 일반 ascii 문자는 정상적이거 같아요.

일단 순번 칼럼 추가해서 임시대응은 했으나, 왜 그런지 궁금하네요

 

maildb=# SET CLIENT_ENCODING TO 'uhc';
maildb=#
maildb=# insert into test values('000001', '2');
INSERT 0 1
maildb=# insert into test values('000001', '1');
INSERT 0 1
maildb=# select * from test;
   docno    |    name   
------------+------------
 000001     | 2        
 000001     | 1        
(2 rows)

nikim님이 2005-08-10 19:31에 작성한 댓글입니다.
이 댓글은 2005-08-10 19:32에 마지막으로 수정되었습니다. Edit

컴파일을 다시 해보시던가 약간 다른 버젼을 써보시던가 해보세요. 영 이상하네요.

별 상관은 없지만 initdb 하실 때에 어떤 옵션을 주고 하셨나요?

박성철(gyumee)님이 2005-08-10 20:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6257현제 시간으로 부터 5초전까지의 목록만 뽑아내는 쿼리문을 알고 싶습니다. [3]
이정호
2005-08-10
3199
6256트리거 에러 좀 봐주세요. [1]
김창욱
2005-08-10
2274
6255칼럼의 디폴트값을 검색할 수 있는 방법이 있나요? [3]
김창욱
2005-08-10
2196
6254ERROR: duplicate key violates unique constraint "pk_test" [5]
김남일
2005-08-09
2897
6253pgadmin 에서 [3]
포스트
2005-08-08
2658
6252UPDATE할때 [4]
가우
2005-08-08
2546
6251to_char 이용 날짜 추출 [1]
이소현
2005-08-06
2742
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다