본문 바로가기
Solutions/MySQL

MySQL 타임존 에러 - The server time zone value 'KST' is unrecognized

by Rayner 2020. 10. 18.
728x90

MySQL Workbench나 DBeaver 와 같은 SQL DB 툴이나 Java 어플리케리션에서 MySQL DB에 접속할 때 KST 타임존을 인식하지 못하는 에러가 발생할 수 있다. 이는 MySQL 5 버전 이후부터 MySQL Connector/J 라이브러리에서 KST를 인식하지 못해서 발생하는 문제이다. MacBook이 느려져서 몇 년만에 초기화 후 MySQL을 재설치했더니 아직도 이 문제가 해결되지 않고 재발해서 정리해본다.

 

"The server time zone value 'KST' is unrecognized"

 

해결방법 1 : DB 툴에서 Time Zone 설정

 

필자는 DB 툴로 DBeaver를 사용 중인데 DBeaver는 connection settings 메뉴에서 server time zone을 설정할 수 있는 메뉴를 제공한다. Server Time Zone 은  "Asia/Seoul" 을 선택하면 된다.

 

 

 

 

해결 방법 2 : MySQL 서버에서 Default Time Zone 설정

 

DB 툴에서 time zone을 설정하여 사용 가능하더라도 막상 Java 어플리케이션을 개발하여 실행해보면 아래 그림과 같이 동일한 에러가 발생한다. 이 문제를 근본적으로 해결하려면 MySQL 서버 자체에서 KST 타임존을 인식할 수 있도록 환경설정 파일을 수정해야 한다.

 

 

 

 

MySQL의 타임존 설정을 위해서 사용 가능한 설정 파일은 아래의 4개가 있으며 위에서 아래 순으로 서버에서 읽기때문에 필자는 최우선 순위 설정 파일인 /etc/my.cnf 에 타임존 정보를 추가한다.

 

/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/etc/my.cnf
~/.my.cnf

 

/etc/my.cnf 파일을 열고 타임존 'Asia/Seoul' 을 설정한 후 서버를 재시작했더니 여전히 동일한 에러가 발생했다. 그래서 데이터 디렉토리 에 있는 에러 로그(/usr/loca/var/mysql/사용자이름-컴퓨터이름.err)를 확인했더니 여전히 서버가 타임존 정보를 정상적으로 인식하지 못하하는 현상이 확인되었다. 

 

" Fatal error: Illegal or unknwon default time zone 'Asia/Seoul'

 

 

그래서 Time Zone 정보 대신에 Time Offset 값을 설정하였더니 정상적으로 동작하였다.

 

/etc/my.cnf

[mysqld]
default-time-zone='+9:00'

 

my.cnf 파일 수정을 위해서는 현재 구동중인 mysql 중단하셔야 하는 것 잊지마세요. 그리고 수정 후에는 당연히 재시작은 필수

 

 

늘 상쾌한 코딩 생활이 되시길...

728x90

댓글