2014년 9월 26일 금요일

AWS의 RDS이용 시 MySQL function 에서 한글이 깨지는 경우

AWS의 RDS 서비스 이용 시, MySQL에서 아래와 같이 function 을 만든 경우 한글이 깨지는 경우가 종종 있다.
물론, ParameterGroup 의 모든 character-set을 UTF8 로 지정한 경우에도..
character_set_database 의 값이 utf8 이 아닌 latin1 으로 되어있는 경우일것이다.
이것은 파라미터 그룹을 변경해서 적용해도 바뀌지 않는다. (현재까지는..)

/* 코드명 조회 */
DROP FUNCTION IF EXISTS aaa.GET_CODE_NAME;

CREATE FUNCTION aaa.GET_CODE_NAME(cdType VARCHAR(4), cdValue VARCHAR(4)) RETURNS VARCHAR(100) CHARSET UTF8
BEGIN
  DECLARE codeName VARCHAR(100) CHARSET UTF8;

  SET codeName = (
    SELECT NAME FROM CODES WHERE TYPE = cdType AND CODE = cdValue
  );

  RETURN codeName;
 
END;


위와 같이 리턴타입 및 리턴에 쓰이는 변수들의 캐릭터셋도 지정해줘야 한글이 깨지는것을 방지할 수 있다.

출처: http://blog.jidolstar.com/867

댓글 없음:

댓글 쓰기