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 和服务器时区错误的主要内容,如果未能解决你的问题,请参考以下文章