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

Spring Boot报错DataSourceBeanCreationException:无法确定合适驱动类

问题排查:Spring Boot启动时无法确定合适的数据库驱动类

异常信息

Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

配置文件内容

spring.datasource.url=jdbc:sqlserver://PADBQUA01
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.username=userName
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
spring.jpa.defer-datasource-initialization=true

POM依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>2.7.5</version>
        </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.6.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>2.7.6</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc42</artifactId>
        <version>6.0.8112</version>
    </dependency>
</dependencies>

原因分析及解决步骤

1. 数据库URL不完整

SQL Server的JDBC URL需要明确指定端口和数据库名称,当前URL缺少这两个关键信息,导致驱动无法识别连接规则。修改URL为:

spring.datasource.url=jdbc:sqlserver://PADBQUA01:1433;databaseName=你的数据库名称

(默认端口为1433,若你的实例使用自定义端口,替换为实际端口即可)

2. 依赖版本冲突或冗余

  • Spring Boot Starter版本不一致:spring-boot-starter-test用了2.7.5,spring-boot-starter-data-jpa用了2.7.6,统一版本号避免冲突,建议都使用2.7.6。
  • 手动引入的hibernate-core和spring-boot-starter-data-jpa自带的Hibernate版本存在冲突,Spring Boot 2.7.x默认集成Hibernate 5.6.15.Final,删除手动指定的hibernate-core依赖,让starter自动管理版本即可。

修改后的POM依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>2.7.6</version>
        <scope>test</scope> <!-- 测试依赖添加test scope,避免打包到生产环境 -->
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.7.6</version>
    </dependency>
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc42</artifactId>
        <version>6.0.8112</version>
    </dependency>
</dependencies>

3. 驱动兼容性问题

sqljdbc42仅支持JDK 8,若你使用更高版本JDK,建议替换为微软官方推荐的新版驱动mssql-jdbc,同时可以省略driverClassName配置,新版驱动会通过URL自动识别驱动类:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>11.2.3.jre8</version> <!-- 根据你的JDK版本选择对应版本 -->
</dependency>

4. 验证依赖是否正确引入

执行mvn dependency:tree命令,检查SQL Server驱动是否出现在依赖树中。如果没有,清理本地Maven仓库后重新执行mvn clean install下载依赖。

内容的提问来源于stack exchange,提问作者מרים בלוך

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:40:19