
Step 0. 상황
회원 가입 기능을 구현하기 위해서 필요한 정보들을 입력하고 요청을 전송했는데 아래와 같은 에러가 발생했다.
SQL state [HY000]; error code [1366]; Incorrect string value: '\xEA\xB9\x80\xEC\xBD\x94' ...
Step 1. 원인
테이블을 생성할 때 인코딩 설정을 해주지 않아서 발생한 문제였다.
데이터베이스 인코딩 확인
SELECT default_character_set_name,
DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE schema_name = '[데이터베이스명]';

테이블 인코딩 확인
SELECT TABLE_COLLATION
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '[데이터베이스명]';

* 변경한 이후 출력 결과
Step 2. 해결
아래와 같이 데이터베이스와 테이블의 인코딩을 변경해주고 datasource URL 값 뒤에도 설정을 추가했다.
데이터베이스 인코딩 변경
ALTER DATABASE [데이터베이스명] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

테이블 인코딩 변경
ALTER TABLE [테이블명] convert to charset utf8;
DB URL 설정 추가
jdbc:log4jdbc:mysql://[경로]:[PORT]/[데이터베이스명]?characterEncoding=UTF-8
참고
'DB' 카테고리의 다른 글
| [MyBatis] BindingException 해결 (feat. IntelliJ Gradle 설정) (1) | 2023.05.29 |
|---|---|
| [MySQL] com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure (1) | 2023.03.31 |
| [MyBatis] MyBatis 설정과 log4jdbc-log4j2 적용기 (0) | 2023.03.31 |
| [DB] JOIN 알고리즘과 성능에 대하여 (1) | 2023.03.15 |
| [DB] JOIN의 종류 (1) | 2023.03.15 |