今天又遇到一个mysql奇怪的问题。mysql连接不了了。。。。整了很久,最终放弃了,直接复制了直接的mysql地址。整理一下问题,后来经过对比发现了问题,整理解决方案如下:
附报错截图:
报错的url:
jdbc:mysql://127.0.0.1:3306/yf_user_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&serverTimezone=Hongkong
更改后的url:
jdbc:mysql://127.0.0.1:3306/yf_user_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT%2b8&useSSL=false
仔细看一下,不同的地方就是后来更改了时区、和ssl:
serverTimezone=GMT%2b8&useSSL=false
添加了这两个就没有问题了。总结一下解决方案:
1.判断一下自己mysql的时区是那里。(是要设置serverTimezon)
使用navicat工具,新建查询,输入下面代码:
show variables like '%time_zone%';
就可以知道自己的时区了,一般是跟随系统时间。
根据自己的时区选择对应的就好了。serverTimezon=???
2.判断自己mysql是多少版本。(是要设置useSSL)
使用navicat工具,查看:
如果是5.7版本以上就要加上useSSL=false。
注:在mysql进行连接的时候,如果mysql的版本是5.7之后的版本必须要加useSSL=false,mysql5.7之前的版本则不用进行添加useSSL=false,会默认为false,一般情况下都是使用useSSL=false,尤其是在将项目部署到linux上时,一定要使用useSSL=false,useSSL=true是进行安全验证,一般通过证书或者令牌什么的,useSSL=false就是通过账号密码进行连接,通常使用useSSL=false。
以上就是本次错误的理解了。出现这个问题会有很多种原因,各位可以在评论区留言,一起补充。