initdb --lc-collate=C 옵션을
지정해서 해결됬습니다.
무식해서 한동안 손발이
고생했습니다. 아래 내용은 무시하시기 바랍니다.
답변주신분께
감사합니다.
------------------------------------------------------------------------------------
인코딩을 UNICODE로 성성한 DB에서 클라이언트 인코딩을 uhc,
euc_kr로 변경후 사용하는 경우 Unique 제약조건이 잘못 처리되고
있습니다.
( euc_kr로 생성된 DB는 정상적으로 처리되었음 )
리눅스에서는 중복되지 않은 자료를 중복 처리하고 있었으며,
윈도우에서는 중복처리가 되지 않았습니다. 점검이 필요할것으로
생각됩니다.
CREATE TABLE test
(
name varchar NOT NULL,
CONSTRAINT pk_test PRIMARY KEY (name)
)
WITHOUT OIDS;
ALTER TABLE test OWNER TO postgres;
insert into test values('홍길동');
insert into test values('홍길동');
insert into test values('장길산');
insert into test values('장길산');
select * from test;
**** 윈도우 pgsql ***
test=# insert into test values('홍길동');
INSERT 0 1
test=#
test=# insert into test values('홍길동');
INSERT 0 1
test=#
test=# insert into test values('장길산');
INSERT 0 1
test=#
test=# insert into test values('장길산');
INSERT 0 1
test=#
test=#
test=#
test=# select * from test;
name
--------
홍길동
홍길동
장길산
장길산
(4 rows)
test=#
**** 리눅스 pgsql ***
test=# insert into test values('홍길동');
INSERT 0 1
test=#
test=# insert into test values('홍길동');
ERROR: duplicate key violates unique constraint "pk_test"
test=#
test=# insert into test values('장길산');
ERROR: duplicate key violates unique constraint "pk_test"
test=#
test=# insert into test values('장길산');
ERROR: duplicate key violates unique constraint "pk_test"
test=#
test=#
test=#
test=# select * from test;
name
--------
홍길동
(1 row)
|