Spring Boot连接MySQL时出现Database Driver未知/未定义错误
Spring Boot应用数据库驱动显示undefined/unknown且无法写入MySQL的问题
我的Spring Boot应用启动时未抛出明确错误,但日志显示数据库驱动为undefined/unknown,同时无法向MySQL数据库添加数据。相关配置与代码如下:
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
application.properties
spring.application.name=SpringWebApp server.port=8089 spring.datasource.url=jdbc:mysql://localhost:3306/my_db spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.hibernate.ddl-auto=update
ProductController.java
package com.samna.SpringWebApp.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.samna.SpringWebApp.model.Product; import com.samna.SpringWebApp.service.ProductService; @RestController public class ProductController { @Autowired ProductService service; @GetMapping("/products") public List<Product> getProducts(){ return service.getProducts(); } @GetMapping("/products/{pid}") public Product getProductById(@PathVariable int pid){ return service.getProductById(pid); } @PostMapping("/products") public void addProducts(@RequestBody Product product) { service.addProducts(product); } @PutMapping("/products") public void updateProduct(@RequestBody Product product) { service.updateProduct(product); } @DeleteMapping("/products/{pid}") public void deleteProduct(@PathVariable int pid) { service.deleteProduct(pid); } }
ProductRepository.java
package com.samna.SpringWebApp.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.samna.SpringWebApp.model.Product; @Repository public interface ProductRepository extends JpaRepository<Product, Integer>{ }
修正后的Product实体类(原代码重复了Repository内容)
package com.samna.SpringWebApp.model; import jakarta.persistence.Entity; import jakarta.persistence.Id; @Entity public class Product { @Id private int pid; private String name; private double price; // 省略getter、setter及构造方法 }
日志信息
Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-3)']
Database driver: undefined/unknown
Database version: 9.0.1
Autocommit mode: undefined/unknown
Isolation level: undefined/unknown
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
解决步骤
1. 调整MySQL依赖范围
mysql-connector-j的runtime范围可能导致驱动无法被类路径正确加载,移除该范围:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> </dependency>
2. 修正数据源URL配置
添加时区参数避免时区兼容问题,同时确认数据库服务状态:
spring.datasource.url=jdbc:mysql://localhost:3306/my_db?serverTimezone=UTC
- 验证MySQL服务在本地3306端口运行
- 确认
my_db数据库已创建,root账号拥有该库的读写权限
3. 确保实体类配置正确
实体类必须放在model包下,标注@Entity注解,主键字段标注@Id,并补充完整的getter、setter方法。
4. 显式配置Hikari连接池参数
补充连接池配置,避免参数未初始化导致的日志异常:
spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.auto-commit=true
5. 启用详细日志排查
添加日志配置,查看数据库连接的完整过程:
logging.level.com.zaxxer.hikari=DEBUG logging.level.org.springframework.jdbc=DEBUG
内容的提问来源于stack exchange,提问作者Samna Samna
相关产品推荐
相关产品推荐

