The server time zone value ‘xx‘ is unrec

错误描述
连接MySQL数据库运行报错
【The server time zone value ‘xx‘ is unrec】java.sql.: Thetime zone value ‘?й???????’ isormore than one time zone. You musttheor JDBC(via the ‘’) to use a moretime zone value if you want totime zone .
错误原因

The server time zone value ‘xx‘ is unrec

文章插图
时区问题,服务器的时区的识别或代表多个时区 。如果您想利用时区支持,您必须配置服务器或JDBC驱动程序(通过配置属性)使用一个更具体的时区值如果你想利用时区支持 。
解决办法
在配置文件的时候添加时区信息就可以解决问题了 。
在连接数据库的url后面添加
serverTimezone=GMT%2B8 # 添加时区,GMT%2B8是东八区(也就是北京时间)serverTimezone=UTC # UTC,简称世界统一时间,跟北京时间相比,比北京早8个小时
【注意**】建议使用=GMT%2B8设置为东八区,如果使用=UTC,那么在编译器上执行的SQL语句,会先以UTC时区进行存储,发送到MySQL数据库,然后MySQL以本地时区进行转换,最终导致执行时间比从编译器上的执行时间早8个小时,也就是造成同一条SQL语句,在MySQL上执行,与编译器执行,结果相差8个小时 。
如果没有自定义设置时区,MySQL数据库默认使用的时区是系统时区CST,这个CST又有好多种解释,分别为如下 。而MySQL服务器又把CST理解成了美国中部时区(),结果就使用了美国中部时间的时区,而不是后端系统服务器的时区 。
.yml
spring:datasource: # hikaridriver-class-name: com.mysql.cj.jdbc.Driver # mysql 8username: rootpassword: rooturl: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8# serverTimezone=GMT%2B8表示东8区,不然报错time zone