rds 로 연결한 mysql 테이블의 데이터 값을 보다 보니
현재 시간과 다른 것을 발견했다.
이유를 알아보니 서버와 데이터베이스의 시간대(timezone)가 달랐다.
MySQL 서버의 시간대 확인
다음 sql 문을 통해 mysql 서버의 시간대를 확인할 수 있다.
SELECT @@global.time_zone, @@session.time_zone;
그럼 이런 결과를 받게 되었는데
@@global.time_zone@@session.time_zone
한국(Seoul) 시간은 UTC+9이므로, 저장 시점보다 9시간 빠르게 저장되고 있던 것이다.
UTC | UTC |
Spring Boot와 MySQL 시간대 맞추기
시간대를 맞추는 방법은 여러 가지가 있는데 우선
1️⃣ MySQL 시간대를 Asia/Seoul로 변경
SETGLOBAL time_zone ='Asia/Seoul'; SET SESSION time_zone ='Asia/Seoul';
(단, 이 방법은 my.cnf에서 default-time-zone='Asia/Seoul' 설정해야 영구적으로 적용된다.)
2️⃣ Spring Boot의 application.yml에서 UTC 설정 확인
spring:
datasource:
url: jdbc:mysql://{db}:3306/{db}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
application.yml 파일에서 다음 url 부분을
serverTimezone=Asia/Seoul을 명시적으로 설정해야 MySQL이 한국 시간 기준으로 저장된다.
- 현재 설정이 serverTimezone=UTC라면, 데이터가 UTC로 저장되면서 +9시간 차이 발생된다!
나는 2번 방법을 이용했고 시간대 문제를 해결할 수 있었다!
'🦎 프로그래밍' 카테고리의 다른 글
[AWS EC2] nohup 사용법 / 백그라운드 실행 (2) | 2025.03.24 |
---|---|
[IntelliJ] 인텔리제이 No python interpreter configured for the module 오류 해결 (1) | 2025.03.10 |