出错原因:
因为安装mysql的时候时区设置的不正确。 mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用GMT+8:00格式。
也就是说是数据库和系统时区差异所造成的。
验证:运行cmd登录mysql,控制台输入:
show variables like '%time_zone%';
如果显示SYSTEM则是时区有问题,有两个解决方法:
解决方法一:
在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8。
1.1
按照网上的教程,我第一次是在数据库后面加上(没有引号):"?serverTimezone=GMT+8"
报错:java.sql.SQLException: No timezone mapping entry for 'GMT 8' ;
1.2
后来又查到,需要将+改成%2B,"?serverTimezone=GMT%2B8"就可以了:
1.3
有大神提到:如果把数据库时区改了,那么插入数据库的时间都会自动减8小时。(暂时还没有用到)
解决方案:比如是SpringBoot2.0,在jdbc配置上加了一个&serverTimezone=UTC就行了。
解决方法二:
修改MySQL的配置文件,MySQL配置文件是my.ini文件在你的安装目录下去找,我的是C:webmysql-8.0.13my.ini
用记事本打开,在[mysqld]节点后面加上这句话:
default-time-zone='+08:00'
再次运行:
show variables like '%time_zone%';
显示+8:00就成功了:
此时不用在写?serverTimezone=GMT%2B8都可以运行成功。