链接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

浙公网安备 33010602011771号