链接MySql报错:The server time zone value ‘�й���ʱ��‘ is unrecognized or represents more than one time zone
解决方案一:配置服务器
-
临时配置
重启服务器会失效。使用具有权限的(配置全局变量,可以是root用户)用户,登陆到mysql服务器,运行以下命令:mysql> set global time_zone='+8:00'; Query OK, 0 rows affected (0.00 sec)
-
永久配置
在my.ini中添加配置项(Windwos系统中,my.ini文件位置:C:\ProgramData\MySQL\MySQL Server 8.0),重启服务器生效。[mysqld] default-time-zone = '+8:00'
解决方案二:配置JDBC驱动程序
通过serverTimezone配置连接的属性,即在url中添加serverTimezone=UTC参数。
另外,serverTimezone的值除了UTC外,还可以设置Asia/Shanghai、GMT%2b8(URL编码),把会话(也就是客户端与服务器的链接)的时区设置为东八区。
String url = "jdbc:mysql://localhost:3306/crashcourse?serverTimezone=Asia/Shanghai
JDBC的会话时区如果不配置,默认使用服务器的全局时区配置。 上述配置虽然不会报错,但是不会发挥作用。如果想要时区发挥作用还需要配置useTimezone参数。正确做法是 String url = "jdbc:mysql://localhost:3306/crashcourse?serverTimezone=Asia/Shanghai&useTimezone=true
关于serverTimezone取值的格式:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-datetime-types-processing.html
serverTimezone 只在客户端发挥作用,并不实际修改会话time_zone的值
例如,
JVM Connecter serverTimezone utc+9 server utc+8 底层
UTC+8 8 -9 utc+1
解决方案三:使用低版本驱动程序
我觉得,严格来说,这不算是问题的解决方法,而是逃避问题的手段。如果你不想了解时区是什么及如何设置,像快点学习JDBC开发技术,这也是一种选择。但是,可能会存在软件版本之间的兼容问题。
由于mysql的java驱动程序,在版本6.0.0及以上,才要求必须配置时区,因此,可以使用6.0.0以下版本的mysql-connector-java.jar,例如、比较稳定的版本5.1.49
————————————————
原文链接:https://blog.csdn.net/gao_zhennan/article/details/123953198
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!