SpringBootのMySQL接続で「The server time zone value」エラー

エラーの内容

SpringBootの開発をしていてPom.xmlで色々とライブラリをアップデートしたときに発生したエラーです。

おそらくSpringBootのバージョンを1.5.7から2.2.6に上げたタイミング発生したので、依存関係で「mysql-connector-java」のライブラリもアップデートされたことが原因では…とか適当なことを考えてます。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.6.RELEASE</version>
    </parent>

エラーメッセージ(抜粋と一部の翻訳)

java.sql.SQLException: The server time zone value ‘���� (�W����)’ 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.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)

タイムゾーンサポートを利用する場合は、サーバードライバーまたはJDBCドライバーのいずれかを( ‘serverTimezone’構成プロパティを介して)構成し、より具体的なタイムゾーン値を使用する必要があります。

解決方法

application.propertiesを以下のように修正すると、エラーが発生しなくなります

spring.datasource.url=jdbc:mysql://localhost:3306/?serverTimezone=JST

もしくは「C:\ProgramData\MySQL\MySQL Server 8.0\my.ini」ファイルに

default-time-zone = +9:00

と追記してあげてMySQLを再起動してあげると、正常に起動するようになります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です