reference
https://luminitworld.tistory.com/94?category=975147
https://www.lesstif.com/java/java-+-mysql-+-utf8mb4-emoji-51283094.html
https://sshkim.tistory.com/128
RDS의 타임존, 인코딩 설정을 위해 파라미터 그룹으로 들어가면 기본 default 파라미터가 존재한다.
하지만, default 파라미터 그룹은 수정이 불가능하기 때문에 새로운 그룹을 생성한다.
생성한 파라미터 그룹 링크로 들어가 검색창에 time_zone을 검색하자. time_zone을 보면 세계 각국의 time_zone이 존재한다. 여기서 Asia/Seoul 을 선택한다. 이후 변경 사항을 저장하면 타임존 설정이 완료된다.
인코딩 설정을 위해 파라미터 그룹 링크에서 검색창에 character_set을 검색한다. 한글 데이터가 깨지지 않고 출력되도록 utf-8로 설정해야 한다. utf-8로 설정해도 되지만 이모지를 사용하기 위해 utf8mb4로 설정했다.
MySQL의 utf-8은 3byte로 표현되는 범위의 character만 입력할 수 있지만, 이모지 처럼 4byte로 표현되는 문자를 처리하지 못한다. 반면 utf8mb4는 내부적으로 한 문자를 표현하는데 4바이트를 사용한다.
이모지는 매우 빈번하게 사용되기 때문에 utf8mb4로 인코딩 설정을 하자.
MySQL이 최신버전일 때 권장하는 character_set은 utf8mb4이고, collation은 utf8mb4_unicode_ci 라고 한다. 참고로 collation은 정렬 방식이다.
아래와 같이 charcter_set* 모든 값을 utf8mb4로 설정한다.
아래와 같이 collation* 모든 값을 utf8mb4_unicode_ci로 변경한다.
데이터베이스 옵션 부분의 DB 파라미터 그룹을 이전에 생성한 그룹으로 변경한다.
즉시 적용으로 DB 인스턴스 수정을 한다.
수정사항을 적용시키기 위해 재부팅 한다.
collation_database가 제대로 변경되지 않아서 다음 쿼리문을 통해 데이터베이스에 대해 직접 설정했다.
ALTER DATABASE springDB
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_unicode_ci';
기존에 만든 EC2 환경에서 구축한 RDS에 접근했다. 호스트주소는 RDS의 엔드포인트를 넣어주면 된다.
~$ mysql -u사용자명 -p비밀번호 -h호스트주소