티스토리 뷰

aws

RDS(MySQL) 한글문제 발생시

전기밥통 2018. 5. 25. 11:39

한글과 세종대왕님을 사랑하지만, 컴퓨터의 세계에서는 아니다.


최근 aws rds 를 사용하며 겪은 한글문제를 기술한다.


최선은 rds를 서비스 오픈전에 charset을 모두 utf-8로 변경하는것이다.

아래 명령을 수행해서 나오는 모든값을 utf-8로 변경하자.

SHOW variables LIKE '%character_set%';
SHOW variables LIKE '%colla%';


나의 경우는 테스트와 리얼서버 설정이 달랐다.

리얼서버 설정을 변경하면 되지라고 생각할수 있지만, 상용으로 운영중인 서버의 설정을 변경하는 결정은 쉬운일이 아니다.


[상용서버]



[테스트 서버]



테스트 서버에서 열심히 테스트후 상용서버에서 문제발생하는 경우 난감하다. 


java의 경우 아래와 같이 jdbc url에 파라메터 옵션을 주어 해결했다.

dataSource.url=jdbc:mysql://hello.rds.amazonaws.com/event_v1?useUnicode=true&characterEncoding=utf8&nullNamePatternMatchesAll=true


python의 경우 charset을 utf-8로 설정하고, 쿼리 실행전에 set names 'utf8'을 수행하면 된다는 글이 있어 실행했으나 해결되지 않았다.


결국 table의 속성을 변경하여 해결하였다.

ALTER TABLE pci_mp3_info CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE pci_mp3_info DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE pci_mp3_info CHANGE addr1 addr1 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE pci_mp3_info CHANGE addr2 addr2 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE pci_mp3_info CHANGE addr3 addr3 varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE pci_mp3_info CHANGE addr4 addr4 varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

참고 : https://stackoverflow.com/questions/1168036/how-to-fix-incorrect-string-value-errors


일정에 치이며 하루하루 삽질하는 개발자이다.

뭐가 원인이고 DB에서 캐릭터셋과 테이블단위의 설정이 어떻게 다른지 궁금하기도 하지만 일단 해결되었음에 감사하다.


다시한번 강조하고 싶은 내용은,,,

나중에 삽질하지말고, 초기에 모든 설정을 utf-8로 해두는것이 최선이것 같다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함