Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

mysql 휴대번호 변경 이력 테이블 추가 경험

MYSQL, 20225 min read

배경

어드민 멤버 역할 테이블은 매번 삭제된다. 이력이 정말 필요한 것인지 논란은 있었으나 기록을 남기기로 결정했다. revisons table 을 추가하는 작업을 진행하면서 이전에 어드민 멤버 역할 테이블 데이터를 revisons 에 마이그레이션 하려고 시도했다.

insert into revisions
(created_at,deleted_at,member_entity_id,role_entity_id)
SELECT now(),null,member_entity_id,role_entity_id
FROM member_roles;

그런데 create_at컬럼의 시간이 현재시간보다 9시간 이전 시간으로 보였다. 왜?

mysql 의 time_zone

mysql shell 에서 select @@global.time_zone, @@session.time_zone,@@system_time_zone; 입력하면 SYSTEM,SYSTEM,UTC로 되어있다.

select now() 쿼리를 실행하는 나는 한국에 위치해 있는데 system_time_zone 이 UTC 여서 9시간 느리게 나온다.

해결

set global time_zone = 'Asia/Seoul';
set time_zone = 'Asia/Seoul';

다음 명령어를 실행해 SYSTEM 값을 Asia/Seoul 로 바꿔준다. Error Code: 1298. Unknown or incorrect time zone: 'Asia/Seoul' 0.000 sec 에러가 발생해서 적용되지 않는다면

급하면

SET GLOBAL time_zone='+09:00';
SET time_zone='+09:00';

처럼 숫자를 넣으면 한국 시간으로 추가된다. 하지만.. 나중에는 'Asia/Seoul' 을 설정하는 방법도 찾아 정리하자...

참고

https://luran.me/367 https://maliethy.github.io/posts/mysql_timezone/ https://jwkim96.tistory.com/23 https://velog.io/@taelee/mysql%EC%97%90%EC%84%9C-9%EC%8B%9C%EA%B0%84-%EC%B0%A8%EC%9D%B4%EB%82%A0%EB%95%8CGCP

© 2024 by GwiyeomGo Tech Blog. All rights reserved.