背景知识:

我有一个运行在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.

为什么会这样?


当前回答

my.ini

最后加上这一行:

default-time-zone = '+05:30'

从终端运行此命令

>> sudo mysql -e "SET GLOBAL time_zone = ‘+5:30’;" -u root
>> sudo mysql -e "SELECT @@global.time_zone;" -u root

如果两者都不工作,请尝试使用终端从sqoop使用此请求

>> sqoop list-databases --connect "jdbc:mysql://localhost/employees?serverTimezone=UTC" --username sqoop -P

或者你可以用这个替换你的请求URL

jdbc:mysql://localhost/employees?serverTimezone=UTC

其他回答

上面的程序将生成该时区错误。

在您的数据库名称之后,您必须添加这个:?useTimezone=true&serverTimezone=UTC。一旦你完成了这些,你的代码就可以正常工作了。

祝你好运。

我在数据库端执行了以下命令。

mysql> SET @@global.time_zone = '+00:00';

mysql> SET @@session.time_zone = '+00:00';

mysql> SELECT @@global.time_zone, @@session.time_zone;

我使用的服务器版本:8.0.17 - MySQL社区服务器- GPL

来源:https://community.oracle.com/thread/4144569?start=0&tstart=0

我没有修改任何代码就解决了这个问题。只需进入系统时间设置和设置时区。在我的情况下,默认时区是UTC,我将其更改为我的本地时区。重启所有服务后,一切都恢复正常了。

我只需要在application.properties上添加serverTimeZone=UTC就可以了。 spring.datasource.url = jdbc: mysql: / / localhost / db吗?serverTimezone = UTC

在mysql工作台中运行以下sql语句:

设置@@global。Time_zone = '+00:00'; 设置@@session。Time_zone = '+00:00';

使用以下SQL语句检查是否设置了值:

选择@@global。time_zone @@session.time_zone;