문제 발생
시간의 범위를 이용해서 데이터를 조회하는 기능을 만드는 도중에 문제점을 발견, 테스트가 실행 될 때에 입력되는 data.sql를 통해서 입력되는 데이터의 시간이 내가 입력한 값과는 다르게 9시간 이후의 시간으로 입력되는 것을 확인했습니다. 예를 들어 `2022-01-01T23:00:00` 으로 입력을 했다면 실제 DB에는 `2022-01-02T08:00:00` 의 시간으로 데이터가 입력되어 있던 상황이었습니다.
해결 과정
처음에는 시간이 이상하게 입력되었다는 사실만을 보았지만, 시간들을 살펴보니 일관성 있게 9시간의 시차가 존재하는 것을 발견 했습니다. 그래서 'Spring Boot mysql 9시간 시차' 같은 키워드로 검색을 해보았고, 간단한 해결 방법을 찾게 되었습니다.
Spring Boot에서 MySQL에 연결할 때(다른 DB에도 마찬가지)에 serverTimezone 값을 지정할 수 있었고, 이 값이 지역에 따른 시차에 따른 데이터 입력을 도와주는 값이었습니다. 그런데 저는 이값이 `serverTimezone=UTC` 라고 지정이 되어 있었고 이 시간은 Asia/Seoul과는 9시간의 차이가 발생하게 되어 있었습니다. 그래서 `serverTimezone=Asia/Seoul`으로 값을 변경해 주었고 문제를 해결할 수 있었습니다.
//변경전
spring.datasource.url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
//변경후
spring.datasource.url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
UTC는 Universal Time Coordinated의 약자로 협정 세계시 라고 합니다.
'Study > Spring' 카테고리의 다른 글
[Spring] @RequiredArgsConstructor 이란? (0) | 2022.03.06 |
---|---|
[Spring] null check 잊지 않기, 메모는 바로바로 하기 (0) | 2022.01.31 |
[Spring] Spring Boot NoUniqueBeanDefinitionException 문제 (0) | 2022.01.30 |
[Spring] Spring Boot data.sql 적용 안됨 문제 (0) | 2022.01.28 |
[Spring Security] Spring Security 500 error page ( "status" : 999 ) (0) | 2021.01.02 |