LocalDateTime 자료형을 사용하여 개발을 하던중 Time Zone 관련 에러가 발생했다.
에러는 다음과 같다.
java.sql.SQLException: The server time zone value 'insertDate' is unrecognized or represent
s more than one time zone. You must configure either the server or JDBC driver (via the serverTi
mezone configuration property) to use a more specifc time zone value if you want to utilize time
zone support.
최근에 설치한 MySQL이 높아 java와 데이터 포멧이 달라 JDBC가 인식하지 못하는 오류다.
두 가지의 해결법이 있는데, MySQL 버전을 자신이 사용하고 있는 Java 버전과 맞추는 것 (안정적인 버전이 상호간에 있습니다.)과 datasource.url에서 설정을 해주는 방법이 있다.
spring.datasource.url=jdbc:mysql://localhost:0000/project?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Seoul
# ?createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=15
지금 사용하고 있는 application.properties 설정이다.
최 상단에 data.source.url=jdbc:mysql://localhost:0000/project?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Seoul
에서 프로젝트 뒤에 바로 ?부터의 구문을 삽입하면 된다.
삽입된 구문을 자세하게 살펴보면 유니코드 설정과 time zone 레거시 time무시 및 서버의 타임존을 바꿀 수 있다.
원래 serverTimezone=UTC를 써야 하는데 시차가 생겨 Asia/Seoul로 설정해 줬다.