背景知识:
我有一个运行在Tomcat 7上的Java 1.6 web应用程序。数据库为MySQL 5.5。之前,我使用Mysql JDBC驱动程序5.1.23连接到DB。一切工作。我最近升级到Mysql JDBC驱动程序5.1.33。升级后,Tomcat在启动应用程序时会抛出这个错误。
WARNING: Unexpected exception resolving reference
java.sql.SQLException: The server timezone value 'UTC' is unrecognized or represents
more than one timezone. You must configure either the server or JDBC driver (via
the serverTimezone configuration property) to use a more specifc timezone value if
you want to utilize timezone support.
为什么会这样?
我在[mysqld]部分添加了mysql配置文件
default_time_zone = ' + 03:00 '
重启mysql服务器:
Sudo服务mysql重启
其中+03:00我的UTC时区。
在我的操作系统ubuntu 16.04上配置文件的路径:
/etc/mysql/mysql.conf.d/mysqld.cnf
警告:如果你所在的时区有夏季和冬季时间。如果要更改时间,必须在配置中更改utc。一年两次(通常)或用sudo设置crontab。
我的url jdbc连接
"jdbc:mysql://localhost/java"
在应用程序内按位置为spring引导应用程序设置时区。属性文件
spring.datasource.url=jdbc:mysql://localhost:3306/db?serverTimezone=Europe/Berlin
解决了CET / CEST时区的问题。xml使用maven工件
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>