记录一下mysql的一次错误排查
1. 情景再现
-
项目为springboot+mybatis项目
-
错误发生在启动项目时,之前该项目可以正常启动,没有更改数据库相关的配置
-
异常信息为:
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail !
2. 查找原因
首先这个报错是跟数据库配置有关,问题发生在连接mysql数据库时。
但是具体是哪个配置出了问题我们并不知道,而这个报错是一个springboot给我们抛出来的异常,很难定位到具体是因为什么原因导致的。
通过debug发现错误发生在:MybatisSqlSessionFactoryBean.class:367
Connection connection = ((DataSource)AopUtils.getTargetObject(this.dataSource)).getConnection();
在idea debug 模式的计算器中,evaluate一下上面这行语句就可以看到连接数据库过程中的详细报错为:
Public Key Retrieval is not allowed
3. 解决问题
解决办法: 在数据库url后面添加allowPublicKeyRetrieval=true
解决办法参考的以下博客:
MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法