You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC连接MySQL数据库失败,请求解决连接异常问题

问题解决:JDBC连接MySQL出现连接失败空指针异常

这个错误的核心原因是JDBC驱动版本与MySQL版本不兼容,旧版com.mysql.jdbc.Driver驱动(对应mysql-connector-java 5.x系列)无法适配高版本MySQL(8.0+)的握手协议,导致serverVariables空指针。

解决步骤:

  1. 更换兼容的JDBC驱动

    • 将驱动类从com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver(MySQL 8.0+官方推荐驱动)
    • 连接URL必须补充时区参数,同时建议添加allowPublicKeyRetrieval=true避免公钥检索错误
  2. 更新驱动版本

    • 若使用Maven,修改依赖为8.x系列版本:
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.33</version>
      </dependency>
      
    • 手动导入jar包的话,下载对应8.x版本的jar替换旧驱动
  3. 修改后的测试代码

    import java.sql.*;
    
    public class Main {
        public static void main(String[] args) throws SQLException {
            // 显式注册驱动(MySQL 8.0+支持自动注册,也可省略此步骤)
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            
            // 完善连接URL参数
            String mysqlUrl = "jdbc:mysql://localhost:3306/sql_invoicing?autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
            Connection con = DriverManager.getConnection(mysqlUrl, "root", "你的密码");
            System.out.println("Connection established......");
            // 使用后关闭连接
            con.close();
        }
    }
    
  4. 额外检查项

    • 确认MySQL版本:如果是5.x版本,使用5.x系列驱动即可,但要注意5.x驱动不支持JDK 9+;如果是8.0+,必须用8.x驱动
    • 确保数据库服务正常运行,端口、用户名密码无误(你已确认此项,可跳过)

内容的提问来源于stack exchange,提问作者GROOKEY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:31:57