Trouble Shooting

TimeZone error

JAVA에서 MySQL 혹은 MariaDB 서버에 연결시 다음과 같은 에러가 발생 할 수 있다.

### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException:

  Failed to obtain JDBC Connection; nested exception is java.sql.SQLException:

  Cannot create PoolableConnectionFactory (The server time zone value xxxxx is unrecognized or represents more than one time zone.

  You must configure either the server or JDBC driver (via the serverTimezone configuration property)

  to use a more specifc time zone value if you want to utilize time zone support.)

현재 데이터베이스의 타임존을 확인한다.

SELECT @@global.time_zone, @@SESSION.time_zone;

타임존이 SYSTEM으로 확인된다면 별도로 지정되어 있지 않다는 뜻이다.

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
 
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
 
  <property name="url" value="jdbc:mysql://127.0.0.1:3306/blog_backupdb?serverTimezone=UTC" />
 
  <property name="username" value="backupdbadm"/>
 
  <property name="password" value="backupdbadm"/>
</bean>
[mysqld]
default-time-zone='+9:00'

default-time-zone='UTC' 형식으로 설정하면 에러가 발생한다.(MariaDB, MySQL 동일) UTC로 지정하기 위해서는 '+0:00' 또는 '-0:00'으로 설정한다.