AWS RDS 한글 인코딩 에러

청포도봉봉이·2023년 11월 6일
0

AWS

목록 보기
13/14
post-thumbnail

개요


개인 프로젝트를 하던 중 API로 게시글을 작성을 하였는데

incorrect string value ' xed x85 x8c xec x8a xa4...' for column

이런 에러 메세지가 뜨더니 INSERT가 안되었다.
구글링을 해보니 DB 인코딩 설정 문제라는 것이 파악되었다.

나는 DB를 AWS RDS에서 mariaDB를 사용을 하였고 해결한 과정을 정리해보겠다.


RDS 파라미터 그룹 설정


AWS RDS에서 MySQL 또는 MariaDB를 사용할 때, 기본 문자 인코딩은 latin1으로 되어있어서 인코딩 에러가 났다 UTF-8로 바꿔주면 된다.

AWS RDS 메뉴로 이동 후 파라미터 그룹에서 파라미터 그룹 생성 클릭

파라미터 그룹 패밀리: 사용 중인 DB 버전
그룹 이름: 사용자 정의
그룹 설명: 사용자 정의

생성한 파라미터 그룹 클릭 후 편집 버튼 클릭

character 검색 후 아래 항목들을 utf8mb4로 설정한다.

character-set-client
character-set-connection
character-set-database
character-set-filesystem
character-set-results
character-set-filesystem

collation로 검색 후 아래 항목들을 utf8mb4_general_ci로 설정한다.

collation_connection
collation_server

변경 사항 저장 후

RDS > 데이터베이스 > 본인 인스턴스 선택 후 수정 클릭

새롭게 만든 파라미터 그룹으로 변경 후 저장해준다.

RDS 인스턴스를 재부팅해준다.


이미 DB가 있는 경우


이미 DB가 생성되어 있는 경우에는

-- 테이블 인코딩 변경
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4;

-- 컬럼 인코딩 변경
ALTER TABLE TABLE_NAME MODIFY COLUMN COLUMN_NAME varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL NULL; 

아래 명령어를 통해 인코딩을 변경할 수 있다.

하지만 외래키 제약조건 때문에 변경할 수 없다면

SET foreign_key_checks = 0; -- 외래키 해제
SET foreign_key_checks = 1; -- 외래키 설정

위의 쿼리를 이용해 외래키를 해제하고 ALTER 쿼리를 본인 테이블과 칼럼에 맞게 적용해주면 된다.

profile
서버 백엔드 개발자

0개의 댓글