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
'♾️Language & Framework > 🌿Spring' 카테고리의 다른 글
[Spring] - @RestControllerAdvice를 이용해서 예외처리 AOP 처리하기 (0) | 2023.11.24 |
---|---|
[Spring] - JPA 칼럼명 카멜케이스 적용하기 (0) | 2023.11.23 |
[Spring] - 스프링 MySql 데이터베이스와 JPA 연동 (0) | 2023.11.20 |
[Spring 기술 면접 대비] - 2. @Controller VS @RestController (1) | 2023.11.10 |
[Java / Spring] Lombok: variable not initialized in the default constructor (0) | 2023.11.10 |