No suitable driver found 或 ClassNotFoundException 表明 JDBC 驱动未加载或 JAR 未引入:需确认 mysql-connector-java(如 8.0.33+)已加入 classpath,Maven 项目检查 pom.xml 依赖;MySQL 8+ 驱动类名为 com.mysql.cj.jdbc.Driver,且 Java 8+ 无需 Class.forName()。

连接失败:No suitable driver found 或 java.lang.ClassNotFoundException
说明:JDBC 驱动类未加载或 JAR 包未引入项目。
建议:
立即学习“Java免费学习笔记(深入)”;
- 确认已将对应数据库驱动(如 mysql-connector-java-8.0.x.jar)加入 classpath;Maven 项目需在 pom.xml 中声明依赖
- Java 8+ 不再需要显式
Class.forName(),但若使用旧版驱动(如 mysql-connector-java 5.x),仍需手动加载 - 检查驱动类名是否正确:MySQL 8+ 是
com.mysql.cj.jdbc.Driver,5.x 是com.mysql.jdbc.Driver
连接被拒绝:Connection refused 或 Communications link failure
说明:JDBC 尝试连接数据库服务失败,常见于网络或服务配置问题。
建议:
立即学习“Java免费学习笔记(深入)”;
- 确认数据库服务已启动(如执行
systemctl status mysqld或查看 MySQL 进程) - 核对 URL 中的 host、port 是否正确(例如 MySQL 默认 3306,PostgreSQL 默认 5432)
- 检查防火墙设置、云服务器安全组规则是否放行对应端口
- 验证用户是否有远程访问权限(MySQL 中用
SELECT host FROM mysql.user WHERE user='xxx';查看)
认证失败:Access denied for user 或 Unknown system variable 'tx_isolation'
说明:用户名密码错误,或 MySQL 8+ 认证插件不兼容(如 caching_sha2_password)。
建议:
立即学习“Java免费学习笔记(深入)”;
- 确认连接 URL 中的
user和password参数无误,注意特殊字符需 URL 编码 - MySQL 8.0+ 默认使用
caching_sha2_password插件,老版本驱动可能不支持;可临时改用mysql_native_password:ALTER USER 'xxx'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd'; - 若报
tx_isolation错误,说明驱动版本过低,升级到 mysql-connector-java 8.0.19+ 即可
SQL 执行异常:SQLException: Column Index out of range 或 Parameter index out of range
说明:ResultSet 或 PreparedStatement 使用索引时越界,Java 中索引从 1 开始,不是 0。
建议:
立即学习“Java免费学习笔记(深入)”;
- 读取结果集时,
rs.getString(1)表示第一列,不能写rs.getString(0) - 设置预编译参数时,
ps.setString(1, "a")的索引也从 1 起,且不能超过 SQL 中?的数量 - 使用列名代替索引更安全:如
rs.getString("username")或ps.setString("name", "a")(需驱动支持命名参数)


















