JPA 和服务器时区错误

Posted

技术标签:

【中文标题】JPA 和服务器时区错误【英文标题】:JPA and server time zone error 【发布时间】:2016-12-28 17:39:00 【问题描述】:

无论我如何更改 phpmyadmin 中的时区或 persistence.xml 中的连接字符串,我都会收到此错误:

 com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 
 The server time zone value 'Romance Summer Time' 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.

这是我的 persistence.xml:

<persistence-unit name="booking" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/_boekingdb_/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>

添加

?useUnicode=true&amp;useJD‌​BCCompliantTimezoneS‌​hift=true&amp;useLeg‌​acyDatetimeCode=fals‌​e&amp;serverTimezone‌​=UTC"

到 jdbc.url 连接字符串什么都不做

我什至不知道这个“浪漫夏日时光”是从哪里来的。

任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

只需添加

default-time-zone=+00:00

到 my.ini(在 xamp\mysql\bin 中)修复了所有问题...

【讨论】:

【参考方案2】:

添加serverTimezone=UTC

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/_boekingdb_/>

而且效果很好。结果是

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/_boekingdb_/?serverTimezone=UTC>

【讨论】:

以上是关于JPA 和服务器时区错误的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Spring Boot JPA 时间戳指定 UTC 时区

地理位置分散的服务器、PostgreSQL 和 JPA

如何在 JPA 2 实体中映射 postgresql“带有时区的时间戳”

如何使用 JPA 和 Hibernate 在 UTC 时区中存储日期/时间和时间戳

本地时区存储在 MySQL 中的 Spring Boot JPA 时间

在 JPA MySql 中存储与时区无关的时间的最佳方法