Spring Boot连接MySQL出现时区不识别错误,求解决办法
解决Spring Boot连接MySQL时的时区异常问题
这个问题我之前也碰到过,本质是MySQL 8.x版本的JDBC驱动对时区配置的校验变得更严格了,你看到的两个异常其实是连锁反应:时区识别失败导致数据库连接建立不起来,进而引发了entityManagerFactory这个Bean的创建失败。
下面是两种直接有效的解决办法:
方法一:在JDBC URL中明确指定时区
直接修改你application.properties里的数据源URL,加上serverTimezone参数,指定一个具体的时区值就行。比如针对你提到的中欧时间,可以用:
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Europe/Berlin
如果不想指定具体时区,也可以用UTC(通用协调时间):
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
注意:用UTC的话,要确保你的业务逻辑中处理时间的时候做好时区转换,避免出现时间偏差。
方法二:修改MySQL服务器的全局时区配置
如果你希望所有连接都统一使用指定时区,可以修改MySQL的配置文件:
- Linux系统:找到
my.cnf(通常在/etc/mysql/目录下) - Windows系统:找到
my.ini(通常在MySQL安装目录的my文件夹下)
在配置文件的[mysqld]区块下添加:
default-time-zone = '+01:00'
(+01:00对应中欧时间,你也可以换成其他时区偏移量或者时区标识符)
添加后重启MySQL服务,这样Spring Boot应用就能正常识别服务器时区了。
只要解决了时区识别的问题,后面的BeanCreationException也会自动消失——因为数据库连接能正常建立,Hibernate的相关Bean就能顺利初始化了。
内容的提问来源于stack exchange,提问作者Simulant
相关产品推荐
相关产品推荐

