把SpringBoot项目中连接的MySQL数据库从5.7升级到了8.0后,启动项目后,出现如下错误,且无法启动。
报错信息如下:
Caused by: java.lang.NullPointerException: null
    at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3286)
    at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1987)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1913)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1290)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493)
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2334)
    ... 69 common frames omitted
解决办法
初步一看以为是CharacterEncoding数据库编码什么造成的,还调整了连接url的parameter,例如:
url: jdbc:mysql://localhost:3306/test?allowPublicKeyRetrieval=true&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&useLegacyDatetimeCode=fals
不过无效,最后查到的原因是目标数据库是8.0,但是pom.xml中的数据库驱动还是5.7的,升级下pom的MySQL驱动依赖到相应的版本即可。
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.29</version>
</dependency>

文章评论