Error – The server time zone value ‘KST’ is unrecognized
Java 와 MySQL 을 연동하는 상황에서 다음과 같은 오류를 만나기도 한다.
1 2 3 4 5 6 7 |
HTTP Status 500 – Internal Server Error Type Exception Report Message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (The server time zone value 'KST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.) Description The server encountered an unexpected condition that prevented it from fulfilling the request. |
자세히 보면 java.sql.SQLException 이 보인다. 이 경우는 결국에는 데이터베이스쪽에 문제가 있다는 것이며, MySQL을 사용할 경우에 보이게 된다. 이는 MySQL의 시간을 나타내는 타임존 설정이 맞지 않아 생기는 오류다.
MySQL 5.7, MariaDB 10
MySQL 5.7 과 MariaDB 10 을 사용한다면 my.cnf 에서 다음과 같이 설정함으로써 문제 해결이 가능하다.
1 2 |
# time zone 설정 default-time-zone=Asia/Seoul |
설정할 수 있는 타임존 리스트는 MySQL 메뉴얼을 참조하기 바란다. 이렇게 했는데도 다음과 같은 오류를 만날 가능성도 있다.
1 |
[ERROR] Fatal error: Illegal or unknown default time zone 'Asia/Seoul' |
이럴때는 다음과 같이 해준다.
1 |
/opt/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p |