连接数据库:ERROR:The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration prop
Posted on 2017-12-09 18:23 云小七 阅读(524) 评论(0) 编辑 收藏 举报本打算在maven项目中配置mybatis试试看,想到mybatis如果不是在容器中运行,那么他的事务控制实际上可以使用的是jdbc的提交和回滚,这就要在pom.xml文件中配置mysql-connector-java了,找到一个网站https://mvnrepository.com/,里面可以索引maven中心仓库,搜索mysql-connector-java
我选择了6.0.6进行配置
这下就出问题了,运行了一个jdbc程序,就出现标题所提到的问题了,是因为数据库驱动版本太高了,数据库和系统时区的差异所造成的,解决办法有两个:
一、换成低版本的驱动,比如5.1.43版本的
二、在mysql中执行命令
set global time_zone='+8:00'
或者在数据库驱动的url后加上serverTimezone=UTC参数(时区参数)
如果serverTimezone是第一个参数(?后面就是),则
jdbc:mysql://localhost/tradeonline?serverTimezone=GMT
如果serverTimezone不是第一个参数,则
jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT
但是这样写会报错的The reference to entity “serverTimezone” must end with the ‘;’ delimiter. (对"serverTimezone"的引用必须以';'分隔符结尾)的错误提示,将代码改为:
jdbc:mysql://localhost/tradeonline?characterEncoding&serverTimezone=GMT
因为在XML配置时,要用&代替。另外,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。(PS:数据库驱动JDBC新版本的名字改成了com.mysql.cj.jdbc.Driver)