Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException: 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.
JDBC를 이용하여 mysql 접속 시 , timezone 관련 문제가 발생하였다.
현재 내 컴퓨터가 사용 중인 KST라는 타임존을 찾을 수 없다는 것이다.
MYSQL은 KST라는 타임존을 지원하지 않기 때문이다.
따라서, MYSQL의 타임존을 Asia/Seoul로 바꾸어주면 된다.
방법 1. MYSQL time_zone을 Asia/Seoul로 바꾸기
1. 먼저, 현재 mysql timezone을 확인해보았다.
SELECT @@global.time_zone, @@session.time_zone;
아래와 같이 system으로 설정되어있다면, 기본값으로 설정 되어 있는 것이다.
따라서, timezone을 설정해주어야 한다.
2. timezone 설정하기
mysql의 my.cnf 파일을 바꿔주는 방식으로 진행해보자.
아래의 명령어를 쳐보자.
mysql --help
아래와 같이 나오는데, 왼쪽부터 설정 파일을 적용하는 순서이다.
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/etc/my.cnf ~/.my.cnf
최상위 설정 파일인 /etc/my.cnf 에 들어가보자.
sudo vi /etc/my.cnf
아래의 내용을 작성하자
[mysqld]
default-time-zone=Asia/Seoul
mysql 서버를 재시작하자
mysql.server restart
재시작했는데, 다음과 같은 에러가 발생했다....
ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/yoonui-MacBookAir.local.pid)
해당 에러를 해결하려고 했지만, 해결되지 않아 mysql timezone을 바꾸는 방식이 아닌 다른 방법을 사용해보겠다.
방법 2. JDBC URL에 시간대를 적어서, mysql 서버의 시간대 재정의하기
java에서 jdbcURl을 줄 때, 뒤에 ?characterEncoding=UTF-8&serverTimezone=UTC 를 붙여서 url을 주면 된다.
jdbc:mysql://ip:port/TestDB?characterEncoding=UTF-8&serverTimezone=UTC
아래처럼 하면 된다는 뜻이다.
'MYSQL' 카테고리의 다른 글
[mysql] Access denied for user 'root@'localhost' (using password: YES) (0) | 2022.11.21 |
---|---|
[mysql] [java] java.util.Date & java.sql.Date // 자바 Date 타입 <-> 데이터베이스 timestamp 타입 간 변환 (0) | 2022.09.07 |
[mysql] DATETIME TIMESTAMP (0) | 2022.09.07 |
[mysql] 문자열 데이터 타입 : CHAR vs VARCHAR (0) | 2022.09.05 |
[mysql] 사용 중인 데이터베이스 전환하기 (0) | 2022.09.05 |