IT 관련 정리

마리아디비 데이터 insert 시 Primary Key 중복 관련 대소문자 구분 설정 방법

YK1213 2023. 7. 6. 16:20
반응형

오라클(oracle) 디비에서 마리아(maria)디비로 데이터 이관 시

csv 파일로 데이터 가져오기를 했다.

그런데 몇몇 테이블에서 아래와 같은 오류가 발생했다.

 

SQL Error: java.sql.SQLIntegrityConstraintViolationException: (conn=167433) Duplicate entry 'test'

for key 'PRIMARY'

 

-> 해당 오류는 프라이머리키가 중복 입력돼서 발생하는 문제이다.

해결하기 위해서는 중복되는 PK를 제거하면 된다.

 

그런데 문제는 오라클에서는 PK의 대소문자를 구분해서 해당 데이터가 중복이 아니고,

마리아 디비의 경우에는 대소문자 구분을 하지 않기 때문에 중복된 데이터로 간주 한 것이다.

 

따라서 해당 오류를 해결하기 위해서는 데이터를 입력하는 테이블의 character set과 collation을 변경하면 된다.

 

1. SQL 문으로 해결

MariaDB SQL 문

ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 컬럼데이터타입 CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

예시)
ALTER TABLE test MODIFY COLUMN id varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;

 

2. 디비버(Dbeaver) 데이터베이스 툴을 통한 해결 

 

1. 해당 테이블 더블 클릭 후 properites 클릭

2. 데이터 컬럼 중 중복 오류가 발생한 컬럼 클릭

3. 해당 컬럼의 Character utf8로 변경

4.collation의 값 ut8_bin으로 변경

5. persist 클릭

끝!

반응형