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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:47:23