[MYSQL] time_zone='Asia/Seoul' : Error Code 1298 해결 방법

febCho·2024년 7월 25일
0

오류 해결

목록 보기
5/19
post-thumbnail

문제

my.ini 파일에 default-time-zone=Asia/Seoul을 기입하였는데 반응이 없었다. 찾아 보니 timezone_leaps.sql 패키지가 설치되어 있지 않으면 그렇다고 한다. 패키지가 있는지 없는지 설치 전 미리 확인하기 위한 과정은 다음과 같다.

해결

select @@global.time_zone, @@session.time_zone;
  1. 먼저 MySQL Workbench에 위 sql문을 입력한다.
    둘 다 디폴트 값인 SYSTEM으로 나올 것이다. 나의 경우에도 그랬다.

  2. 그렇다면 아래 sql문을 입력 후 실행해본다.

SET global.time_zone = 'Asia/Seoul';
SET time_zone = 'Asia/Seoul';

그럼 패키지가 없는 경우 이미지와 같이 에러 코드 1298 'Unknown or incorrect time zone : 'Asia/Seoul''이 뜨는 것을 확인할 수 있을 것이다.

  1. 아래 링크로 들어가 파일을 다운 받는다.
    https://dev.mysql.com/downloads/timezones.html

POSIX와 NON POSIX 중 유닉스 계열이라면 전자, 윈도우 계열이라면 후자를 받으면 된다.
나의 경우 윈도우 유저라 timezone_2022a_leaps_sql.zip - Non POSIX with leap seconds를 받았다.

  1. 그리고 cmd를 실행, 다음과 같은 명령어를 순차적으로 입력해 mysql command line client로 접속해 준다.
1. cd (mysql 서버 설치 경로)\bin
2. mysql -uroot -p
3. Enter password  : (패스워드 입력)
  1. Welcome to the MySQL monitor로 시작되는 문구가 뜨면 비밀번호를 올바르게 입력해 성공적으로 연결이 되었다는 뜻이다. 성공적으로 연결이 되었을 시 mysql>이라고 뜰 것이다.

이때, 아래와 같은 명령어를 입력해 준다.

1. show databases;
2. use mysql;
3. Database changed라는 문구가 확인 되면,
	source (timezone 파일 설치 경로)\timezone_leaps.sql;

다른 분들은 바로 use mysql; 해도 되었는데, 나는 그렇게 하고 source ~~를 입력하니 실행이 되지 않았다. 그래서 show databases; 먼저 하고, use mysql;을 실행한 다음 소스 추가를 해주었다.

  1. 그리고 난 뒤 my.ini 설정 파일을 켠 다음, 파일에 하기 코드를 추가한다.
    설정을 변경하기 위해서는 꼭 사용자 권한을 변경해 주어야 하며 아래 코드는 파일의 [mysqld] 하단에 기입하면 된다.
default-time-zone=Asia/Seoul
  1. 그리고 mysql을 재시작해준다.
    (나의 경우, Window+R(실행 창) → services.msc (서비스 열기)로 접속했다.)

  2. 마지막으로 다시 Workbench로 돌아와 아래 sql문을 실행해 보면,

select @@global.time_zone, @@session.time_zone;

SYSTEM으로 확인되었던 게 Asia/Seoul로 알맞게 바뀐 것을 확인할 수 있다.

profile
Done is better than perfect.

0개의 댓글