본문 바로가기

이모티콘 사용을 위해 MySQL character set을 utf8mb4로 바꿔주기

728x90
반응형

요즘은 모바일 키보드에 이모티콘이 기본으로 제공되고 있어서 글을 쓸 때 이모티콘 사용이 흔해졌다. 그런데 기존에 많이 사용하던 mysql의 utf8_general_ci에는 이런 이모니콘 문자가 정상적으로 저장되지 않는다. 그래서 최근에는 utf8_general_ci 대신 utf8mb4_general_ci 캐릭터셋을 많이 사용한다.

만약 기존에 utf8_general_ci로 프로그램이 개발되어 있다면 alter 명령을 이용해 캐릭터셋을 변경 할 수 있다.
※ 이모티콘을 이모지(emoji)라고 부르는 사람도 있는데 이건 이모티콘을 일본식으로 바꾼 신조어이기 때문에 사용을 자제해야 한다.

SSH나 Telnet으로 MySQL에 로그인 했다면 Table을 선택하고 character set을 변경해 준다.
ALTER TABLE `테이블 이름' CHANGE `필드명` `필드명TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;

테이블 필드의 charcter set을 utf8mb4_general_ci로 변경한다. 필드의 속성을 변경하는 문장이다.

테이블 이름 : 속성을 변경 할 테이블 이름. 그누보드일 경우 테이블 이름이 g4_ 또는 g5_로 시작한다.
필드명 : 변경 할 테이블의 필드 이름이다. 그누보드일 경우 필드명은 wr_으로 시작한다. 필드명을 바꿀게 아니고 속성망 변경할 것이기 때문에 바꿀 필드명과 바뀔 필드명의 이름을 똑같이 쓴다.
필드 속성 : TEXT 외에도 varchar, int 등 여러 속성이 있다. (Data type)

utf8은 다국적 언어를 표현하기 위한 유니코드의 한 종류다. 기존에 utf 코드는 3Byte로 이루어졌으나 아시아 일부 국가의 언어를 다 표현하기엔 3Byte로 부족한 부분이 있었다. 그래서 이걸 4Byte로 늘린 게 mb4 캐릭터셋이다. 기존에 사용하던 데이터베이스는 주로 utf8로 설정이 되어 있다. 데이터베이스 전체를 mb4로 변경 하기도 하는데 글자를 표현하는 Byte 수가 늘어나는 만큼 저장공간 사용에 있어 효율성도 따져봐야 한다.

#] ALTER DATABASE 데이터베이스명 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

데이터베이스 전체에 새 캐릭터셋을 적용 하는 명령이다. 기존의 테이블에는 적용되지 않고 새로 생성하는 테이블에만 적용된다.

데이터베이스명 : 적용할 데이터베이스 이름. 이 명령은 root 권한이 있어야 한다.
데이터베이스를 생성 할 때는 ALTER 대신 CREATE로 바꿔준다. 또 테이블 캐릭터셋을 정할 때도 utf8 대신 uf8mb4로 바꿔주기만 하면 된다.

728x90
반응형