가계부를 만들면서 디바이스에서 입력한 정보를 백서비스로 넘기고 DB에 데이터를 저장하려고 했는데
이런 오류가 발생했다.
category의 밸류가 잘못된 것 같은데.. Vo의 category 자료형이나 데이터베이스의 컬럼을 확인해봤는데 String과 VARCHAR로 문제없이 설정이 돼있었고 디버깅을 통해 넘어온 값을 봐도 정상적으로 String 값을 가져오고 있었다.
그래서 무슨 오류인가 하니 데이터베이스의 문자셋이 잘못 성절돼있어 내가 넘겨준 값을 제대로 확인하지 못하는 상태였다.
저는 Amazon의 RDS 서비스를 이용하고 있었고 생성된 데이터베이스를 확인해봤더니
위 사진처럼 swedish의 문자셋으로 설정이 돼있었고 테이블이 생성되면서 데이터베이스의 기본설정을 따라 swedish로 설정되어 내가 보낸 한글을 읽지 못해 발생한 오류였다.
해결방법
1. 관리도구를 이용
저는 heidiSQL로 DB에 접속중이었어서 해당되는 DB의 문자셋을 우리가 사용하는 utf8mb4_unicode_ci로 변경했습니다.
변경 후에 생성된 테이블의 설정값 도 확인해주시고 변경해주시면 됩니다.
2. 커맨드를 이용
리눅스 시스템이나 서버에 직접 접속하신 분들은 커맨드를 통해 수정해줘야 합니다.
2-1. DB의 문자셋 변경
ALTER DATABASE "DB 이름" CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2-2. 테이블의 문자셋 변경
ALTER TABLE "테이블" CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2-3. 특정 컬럼의 문자셋 변경
ALTER TABLE "테이블" MODIFY "컬럼" VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
문자 셋 변경 후 정상적으로 데이터 등록 확인!
'장난감 프로젝트 > 가계부' 카테고리의 다른 글
[가계부] 1. 가계부 사이드 프로젝트 중간점검 (1) | 2024.12.21 |
---|---|
[가계부] 0. 가계부 사이드 프로젝트 (0) | 2024.12.03 |