报错:The server time zone value ‘�й���׼ʱ��’ is unrecognied

当我们通过JDBC连接数据库的时候有时候会报出以下的错误:

The server time zone value ‘�й���׼ʱ��’ 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 specific time zone value if you want to utilize time zone support.

翻译一下就是:服务器时区值’�й���׼ʱ��’ 无法识别或表示多个时区。如果要使用时区支持,必须配置服务器或JDBC驱动程序(通过“serverTimezone”配置属性)以使用更具体的时区值。

这是由于使用的JDBC驱动包版本高于6(包括6),当我们使用这些版本连接要使用的URL时,必须加上serverTimezone参数,来设置时区。

解决方法1

将JDBC连接的URL修改为:

jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC

这里UTC代表全球标准时间,可以根据需要更改其值。

我们使用的时间是北京时间,即东八区时间,领先UTC八个小时。

所以我们可以将URL修改为:

jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2b8//上海时区也为东八区jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai

解决方法2

当然我们可以直接通过更改使用的驱动包版本来解决该问题,只要使用6以下的版本就能解决。