本打算在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)