heroku에서 clearDB를 사용했는데 db에 저장해보니 한글이 ??로 저장되어있었다
찾아보니 clearDB는 한글지원이 되지 않는다고 한다. jawsDB를 사용해야 한다고 한다.
jawsDB install 링크 -> https://elements.heroku.com/addons/jawsdb
만들고 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 |
---|