Spring Boot应用启动失败:无法配置DataSource及确定驱动类
Spring Boot启动失败:DataSource配置异常
核心错误信息
2023-02-20 09:13:46.039 WARN 13192 --- [ restartedMain] ConfigServletWebServerApplicationContext : 上下文初始化期间遇到异常,取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: 创建类路径资源[org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]中定义的名为'dataSourceScriptDatabaseInitializer'的Bean失败:方法'dataSourceScriptDatabaseInitializer'参数0存在不满足的依赖;嵌套异常为org.springframework.beans.factory.BeanCreationException: 创建类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义的名为'dataSource'的Bean失败:通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.BeanInstantiationException: 无法实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法'dataSource'抛出异常;嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: 无法确定合适的驱动类 --- 应用启动失败 描述: 无法配置DataSource:未指定'url'属性,且无法配置嵌入式数据源。 原因:无法确定合适的驱动类
解决方案
- 使用嵌入式数据库:若无需外部数据库,添加H2、HSQL或Derby依赖到项目中
Maven示例:
Gradle示例:<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>runtimeOnly 'com.h2database:h2' - 配置外部数据库连接:在
application.properties/application.yml中补充数据库参数
以MySQL为例:spring.datasource.url=jdbc:mysql://localhost:3306/your_database spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver - 激活指定配置文件:如果数据库配置在特定profile文件(如
application-dev.properties)中,通过以下方式激活:- 启动命令添加参数:
java -jar your-app.jar --spring.profiles.active=dev - 或在主配置文件中设置:
spring.profiles.active=dev
- 启动命令添加参数:
完整启动日志
09:13:42.160 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - 创建了RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@4c2a545c . ____ _ __ _ _ /\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/=/=/ :: Spring Boot :: (v2.7.8) 2023-02-20 09:13:42.672 INFO 13192 --- [ restartedMain] c.e.bookingdemo.BookingdemoApplication : 正在启动BookingdemoApplication,使用Java 1.8.0_361,运行于LAPTOP-I98TF32A,PID为13192(启动路径:C:\Users\rutvi\Downloads\bookingdemo\bookingdemo\target\classes,由rutvij在C:\Users\rutvi\Downloads\bookingdemo\bookingdemo中启动) 2023-02-20 09:13:42.676 INFO 13192 --- [ restartedMain] c.e.bookingdemo.BookingdemoApplication : 未设置激活的配置文件,默认使用1个配置文件:"default" 2023-02-20 09:13:42.814 INFO 13192 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools属性默认值已生效!设置'spring.devtools.add-properties'为'false'可禁用 2023-02-20 09:13:42.814 INFO 13192 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : 如需更多Web相关日志,可考虑将'logging.level.web'属性设置为'DEBUG' 2023-02-20 09:13:44.069 INFO 13192 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : 正在DEFAULT模式下引导Spring Data JPA仓库。 2023-02-20 09:13:44.099 INFO 13192 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Spring Data仓库扫描完成,耗时12毫秒。未找到JPA仓库接口。 2023-02-20 09:13:45.621 INFO 13192 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat已初始化,端口为:8080(http) 2023-02-20 09:13:45.642 INFO 13192 --- [ restartedMain] o.apache.catalina.core.StandardService : 正在启动服务[Tomcat] 2023-02-20 09:13:45.642 INFO 13192 --- [ restartedMain] org.apache.catalina.core.StandardEngine : 正在启动Servlet引擎:[Apache Tomcat/9.0.71] 2023-02-20 09:13:45.901 INFO 13192 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : 正在初始化Spring嵌入式WebApplicationContext 2023-02-20 09:13:45.902 INFO 13192 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : 根WebApplicationContext初始化完成,耗时3087毫秒 2023-02-20 09:13:46.039 WARN 13192 --- [ restartedMain] ConfigServletWebServerApplicationContext : 上下文初始化期间遇到异常,取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: 创建类路径资源[org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]中定义的名为'dataSourceScriptDatabaseInitializer'的Bean失败:方法'dataSourceScriptDatabaseInitializer'参数0存在不满足的依赖;嵌套异常为org.springframework.beans.factory.BeanCreationException: 创建类路径资源[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]中定义的名为'dataSource'的Bean失败:通过工厂方法实例化Bean失败;嵌套异常为org.springframework.beans.BeanInstantiationException: 无法实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法'dataSource'抛出异常;嵌套异常为org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: 无法确定合适的驱动类 2023-02-20 09:13:46.042 INFO 13192 --- [ restartedMain] o.apache.catalina.core.StandardService : 正在停止服务[Tomcat] 2023-02-20 09:13:46.080 INFO 13192 --- [ restartedMain] ConditionEvaluationReportLoggingListener : ApplicationContext启动失败。如需显示条件报告,请启用'debug'参数重新运行应用。 2023-02-20 09:13:46.126 ERROR 13192 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : --- 应用启动失败 --- 描述: 无法配置DataSource:未指定'url'属性,且无法配置嵌入式数据源。 原因:无法确定合适的驱动类 解决方案: 请考虑以下事项: 如果需要使用嵌入式数据库(H2、HSQL或Derby),请将其添加到类路径中。 如果您的数据库设置需要从特定配置文件加载,可能需要激活该配置文件(当前无激活的配置文件)。
内容的提问来源于stack exchange,提问作者Rutvij Dhameliya
相关产品推荐
相关产品推荐

