본문 바로가기
[DataBase]/MySql

LocalDateTime의 데이터가 9시간 차이남

by control+c 2020. 12. 19.
반응형

java에서 찍어보면 아래와 같이 현재 시간이 찍힙니다. 

expires_at : 2020-12-19 20:44:13

issued_at : 2020-12-19 20:44:14

 

//Java에서 찍어봤을때나오는데이터
{
  "expires_at": {
    "date": {
      "year": 2020,
      "month": 12,
      "day": 19
    },
    "time": {
      "hour": 20,
      "minute": 44,
      "second": 13,
      "nano": 0
    }
  },
  "issued_at": {
    "date": {
      "year": 2020,
      "month": 12,
      "day": 19
    },
    "time": {
      "hour": 18,
      "minute": 44,
      "second": 14,
      "nano": 0
    }
  }
}

 

하지만 DB에 들어간 데이터는 9시간 빠르게 들어가있습니다. 

expires_at : 2020-12-19 11:44:13

issued_at : 2020-12-19 09:44:14

maria DB에 저장된 데이터

 

이런차이는 프로그램에 오류를 만들어냅니다. 

위의 데이터는 oAuth2의 토큰 발행 및 만료 시간인데 조회 할때마다 만료된걸로 나와서 발급된 토큰을 사용할 수가 없습니다. 


해결책 

  • application.yml에 datasource 하위에 url에 "&serverTimezone=UTC"에서 "&serverTimezone=Asia/Seoul"로 변경하면 됩니다.
  • serverTimezone=UTC로 설정되다보니 영국 그리니치의 표준시로 저장된것입니다. 
  • 자바가 아닌 다른 언어세서도 datasource를 관리하는 부분에 해당 설정이 있으므로 살펴보시면 좋을거 같습니다. 

 

 

협정 세계시 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

  //기존 
    datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/integrated_test_app?characterEncoding=UTF-8&serverTimezone=UTC
    username: XXXXXX
    password: XXXXXX
  
  //serverTimezone 수정
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/integrated_test_app?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
    username: XXXXXX
    password: XXXXXX

 

반응형

댓글