본문 바로가기
DB

[MySQL] SQL state [HY000]; error code [1366]; Incorrect string value

by soro.k 2023. 3. 31.

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

 

 

 

참고