概述

问题

使用JDBC连接MySQL时出现下面错误:

The server time zone value ‘�й���׼ʱ��’ is unrecognizedor representsmore than one timezone. You must configure either the server or JDBC driver(via the serverTimezone configuration

原因

发现这是因为安装MySQL的时候时区设置地不正确,MySQL默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式。在你没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和系统时区差异所造成的,在JDBC连接的url后面加上 serverTimezone=GMT 即可解决问题,如果需要使用 gmt+8 时区,需要写成 GMT%2B8 ,否则会被解析为空。再一个解决办法就是使用低版本的 MySQL JDBC 驱动,5.1.28 不会存在时区的问题。

解决办法

在连接字符串后面加上 serverTimezone=GMT%2B8 ,其中GMT是格林威治平时,也称格林威治时间(它规定太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午12点),完整的连接字符串示例如下:

1
jdbc:mysql://localhost:3306/db_secondhandtrade?serverTimezone=GMT%2B8

如果要解决中文乱码输入问题,则加上useUnicode=true&characterEncoding=utf8,完整字符串如下:

1
jdbc:mysql://localhost:3306/db_secondhandtrade?useUnicode=true&characterEncoding=utf8

一般都是两者一起使用,完整字符串如下:

1
jdbc:mysql://localhost:3306/db_secondhandtrade?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8

idea连接MySQL界面如下: