业务场景: 启动web服务不成功,控制台输出 NonTransientConnectionException: Public Key Retrieval is not allowed 异常
根据报错意思 不允许公开密钥检索 的意思,我以为是因为连接方式错误,遂增加
useSSL=false
allowPublicKeyRetrieval=true
链接配置,企图解决报错原因,但是依然出现上述报错,没有解决我的问题
查询通过百度、谷歌搜索解决方案,绝大部分解决方案都是复制粘贴,都说是因为MYSQL8.0的版本导致的,猜测的原因都是 Public Key Retrieva 公共 key 检索没有被允许,猜测可能是连接设置了不允许的情况
而给出的解决方式依然是上诉的 修改链接配置 但我的项目中即便增加配置依然无法启动
最后根据提取NonTransientConnectionException中的关键字 Connection 判断导致报错的原因肯定是因为连接配置导致的,而数据库我们不能动,只能从链接配置上找原因
最后检查链接配置时发现当前项目使用的Mysql连接以来的版本是5.1.4版本,而数据库是8.0.19版本,猜测导致问题的原因可能是因为低版本的配置文件无法连接高版本的数据库
修改以来版本后,再次启动 这次报错变为
“The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone”
增加连接配置
&serverTimezone=Asia/Shanghai
再次启动,服务器启动成功
总结:NonTransientConnectionException 是Mysql连接配置异常,具体异常的原因肯定和连接配置强相关,因此在寻找问题的时候可以从连接配置和版本角度出发
希望能解决大家遇到的问题