MySQL Connector/J 不提供
_mysql这个类——那是 Python 的
mysqldb库用的,Java 里根本不存在这个类。直接写
new _mysql()或 import
_mysql会报
ClassNotFoundException或编译失败。
MySQL Connector/J 的正确驱动类名是 com.mysql.cj.jdbc.Driver
这是自 MySQL 8.0+ 官方推荐的驱动类,取代了旧版的
com.mysql.jdbc.Driver(已弃用)。JDBC 规范要求通过类名加载驱动,但现代用法已不需要显式
Class.forName(),只要 JAR 在 classpath 中,DriverManager 就能自动发现。 使用 Maven 时确保引入的是新版坐标:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>手动添加 JAR 时,确认文件名含
mysql-connector-java-8.x.x.jar,而非老版本
mysql-connector-java-5.1.x.jar连接 URL 必须带
serverTimezone参数,否则可能抛
SQLException: The server time zone value '...' is unrecognized:
jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false
为什么找不到 _mysql
?因为它是 CPython 扩展模块
_mysql是 Python 的
MySQLdb底层封装,由 C 编写,暴露给 Python 的原生接口。Java 没有、也不会提供同名类。混淆通常发生在开发者刚从 Python 切换到 Java,或误读了跨语言文档。 Java 端操作 MySQL 的标准路径是:JDBC 接口 →
DriverManager/
DataSource→
Connection→
PreparedStatement所有实际数据库交互都走
java.sql.*和
com.mysql.cj.*包下的类,和
_mysql零关系 若在 Stack Overflow 或旧博客里看到
_mysql示例,基本可判定内容混用了 Python 和 Java 栈
常见错误:加载驱动失败但以为是类名写错
真正导致“驱动找不到”的原因,90% 不是类名输错,而是环境问题:
立即学习“Java免费学习笔记(深入)”;
JAR 未加入 classpath(IDE 中没 Add as Library,或 Spring Boot 的lib目录缺失) Maven 依赖 scope 写成了
test,导致运行时不可见 项目用了模块化(
module-info.java),但没声明
requires mysql.connector.java;多个 MySQL 驱动 JAR 版本冲突(比如同时存在 5.1.x 和 8.0.x),JVM 加载了旧版却用新 URL 格式,触发
java.lang.UnsupportedOperationException: Not supported
Java 里没有
_mysql,也不需要它。把注意力放在确认 Connector/J 版本、URL 参数、classpath 是否干净上,比查一个不存在的类名有效得多。
