mysql connector/j 不提供 _mysql 类,该类属于 python 的 mysqldb 库;java 中正确驱动类为 com.mysql.cj.jdbc.driver,需使用 8.0+ 版本 jar 并配置 servertimezone 参数。

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 是否干净上,比查一个不存在的类名有效得多。











