본문 바로가기

ETL/Embulk

Embulk MySQL Input, the server time zone value 'KST' is unrecognized or represents more than one time zone.

문제 발생

embulk 를 통해서 mysql input config 파일을 작성하여, preview 를 실행하는 중 다음과 같은 오류가 발생했다.

Emnulk MySQL Input, he server time zone value 'KST' is unrecognized or represents more than one time zone.
timezone 문제인데 크게 두가지 방법이 있다.

  • mysql server timezone 변경
    [myqld]
    ... ...
    default_time_zone='+09:00'
    ... ...
  • jdbc url option 추가
    jdbc:mysql://192.168.0.100:3306/test&serverTimezone=Asia/Seoul

서버측은 귀찮아서 테스트 안함.. 그리고 서버측은 설정을 바꿀 수 없는 경우가 많기 때문에
jdbc 설정만 변경하여 테스트 진행

emnulk 에 적용하기

embulk 에 input 으로 다음과 같이 적용한다.

in:
  type: mysql
  host: 192.168.0.100
  user: test
  password: test
  database: test
  options: {serverTimezone: Asia/Seoul}
  query: |
   some query

그럼 다음과 같이 옵션이 적용된다.

... ...
2020-06-11 14:19:24.953 +0900 [INFO] (0001:preview): Connecting to jdbc:mysql://192.168.0.100:3306/test options {useCompression=true, socketTimeout=1800000, useSSL=false, user=test, useLegacyDatetimeCode=false, tcpKeepAlive=true, serverTimezone=Asia/Seoul, useCursorFetch=true, connectTimeout=300000, password=***, zeroDateTimeBehavior=convertToNull}
... ...