만쥬의 개발일기
article thumbnail

Spring의 JPA를 사용할 때 JPA는 테이블을 자동으로 생성해주는데, 기본적으로 한글 설정은 되어 있지 않다.

따라서 튜플에 한글 값을 넣게 되면

SQL Error: 1366, SQLState: HY000: incorrect string value 라는 에러가 발생하곤 한다.

첫번째 해결 방법 (급할 때)

이는 내가 만든 MySql 테이블의 언어가 UTF-8로 설정 되지 않아서 발생하는 문제인데, 바로 고치는 방법으로는 다음 명령어로 mysql 터미널에서 직접 한글입력이 가능하도록 변경해주는 방법이 있다.

mysql > ALTER TABLE [테이블명] convert to charset utf8;

그러나

모든 작업의 자동화는 개발자의 꿈이 아닌가??

따라서 JPA가 자동으로 테이블을 만들때마다 위 설정이 적용되도록 몇 가지 설정이 필요하다.

두번째 해결 방법 (권장)

우선 mysql 설정 파일을 바꿔주어야한다.

리눅스 기준 다음 경로에 해당 파일이 있다.

sudo vi /etc/mysql/my.cnf

vi로 파일을 연 후 다음 내용을 쓰고 저장한다.

[mysql]
default-character-set = utf8

[client]
default-character-set = utf8

[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

그리고 mysql을 재시작한다.

sudo service mysql restart

그리고 mysql로 접속해 status; 를 입력하면, 다음과 같이 언어 설정이 utf8로 변경되어 있는 것을 확인할 수 있다.

이후 drop table 테이블명; 으로 기존 latin어로 설정되어 있던 테이블을 드랍한 후,

내 Spring 프로젝트로 들어가서 프로젝트를 다시 실행해주면, 정상적으로 한글 입력이 가능한 테이블이 생성된다.

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!