JDBC로 mysql에 접속하니 오류가 나옵니다

java.sql.SQLException: The server time zone value '대한민국 표준시' 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 specific time zone value if you want to utilize time zone support.

에러메시지를 읽어보면 서버에서 타임존을 설정하거나, JDBC 드라이버에서 serverTimezone 속성을 추가해달라고 합니다.

DB 설정 권한이 있으면 mysql 타임존을 설정해주면 되고, 여의치 않으면 후자의 방법을 사용하면 됩니다

 

mysql 타임존 설정방법

여러 방법이 있는데 my.ini(또는 my.cnf) 파일을 수정해 전역 타임존을 설정하는 법을 알아보겠습니다. 참고로 윈도우에서 MySQL 8.0의 my.ini 경로는 아래와 같습니다.

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

이 파일을 관리자 권한으로 메모장 등으로 열고, [mysqld] 부분을 찾아 default-time-zone 내용을 추가해줍니다.

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

한국 시간대는 UTC+9이므로 +9:00과 같이 작성하면 됩니다. 수정 후에는 mysql 인스턴스를 재시작해 설정을 적용해줘야 합니다.

 

serverTimezone 속성 추가

private static String dburlString
	= "jdbc:mysql://localhost:3306/db?serverTimezone=Asia/Seoul";

db 주소 뒤에 ?serverTimezone=Asia/Seoul을 추가한 예입니다. 타임존은 tz database에서 골라서 쓰면 됩니다.

반응형

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

[MySQL] 테이블 Key에서 MUL이란?  (1) 2020.10.27
InnoDB vs MyISAM  (2) 2020.08.06
MariaDB와 MySQL의 차이  (0) 2020.08.06