DB/MySQL

heroku clearDB - mysql사용시 한글 깨짐 현상 해결

이웃비 2021. 7. 16. 15:45

 

heroku에서 clearDB를 사용했는데 db에 저장해보니 한글이 ??로 저장되어있었다

찾아보니 clearDB는 한글지원이 되지 않는다고 한다. jawsDB를 사용해야 한다고 한다.

 

jawsDB install 링크 -> https://elements.heroku.com/addons/jawsdb

 

JawsDB MySQL - Add-ons - Heroku Elements

 

elements.heroku.com

 

만들고 Resources에서 JawsDB MySQL클릭 (만드는 방법 생략)

 

 

클릭하면 친절하게 접속주소, username등의 정보를 볼 수 있다

HeidiSQL로 가볍고 빠르게 db를 확인할수도 있는데, 나는 사용하던대로 mysql workbench를 사용하고있다. 

(workbench연결 방법 생략)

 

 

appication.properties 처음 세팅

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url = jdbc:mysql://{DB 설정}?reconnect=true&useUnicode=true&characterEncoding=UTF-8

spring.datasource.username={username}

spring.datasource.password={password}

spring.datasource.sql-script-encoding=UTF-8

 

그런데 이렇게 하니 한글이 ??로 저장되는게 아니라 그냥 빈칸으로 저장이 되었다.

 

 workbench에서 utf-8로 설정되어있는지 확인했다.

  SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA 
WHERE schema_name = "{Database}";

Status and System Variables - System Variables - char 검색

utf-8로 잘 설정되어있다

 

결론 : 나의 해결방법 ->

결론은 application.properties에서 다음과 같이 설정하니 한글이 제대로 들어왔다

appication.properties 최종 세팅

spring.datasource.url=jdbc:mysql://{DB 설정}?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

spring.datasource.username={username}

spring.datasource.password={password}

spring.datasource.validationQuery="SELECT 1"

 

 

 

옵션 설명

autoReconnect=true, validationQuery="SELECT 1" : https://haenny.tistory.com/54 참고

useUnicode=[true|false] : 전송하는 값을 유니코드로 할지에 대한 여부

characterEncoding=utf8 : 보내는 값에 대한 인코딩

serverTimezone=UTC : 타임존 설정. UTC는 예전의 GMT가 표준화 된 것. 우리나라 표준시 KST로 하려면 에러 발생함. 만약 우리나라 표준시를 적용하고 싶으면 serverTimezone=Asia/Seoul 로 해야한다고 한다. 일단은 UTC유지..

 

'DB > MySQL' 카테고리의 다른 글

윈도우 - mysql 비밀번호 변경  (0) 2021.10.25