SpringBoot集成Derby启动报错:未配置DataSource的url且无可用嵌入式数据源
问题根因与解决步骤
1. 配置适配问题
你当前的配置存在三处影响数据源加载的错误:
spring.jpa.database=default配置会导致JPA无法自动匹配Derby数据库的方言,直接影响数据源初始化- 缺少显式的Derby驱动类配置,部分场景下自动扫描会失败
- 你已激活
spring.profiles.active=dev,需确认datasource相关配置是否和profile配置放在同一文件中,若datasource配置放在application-dev.properties外的其他文件,会出现配置不生效的问题
你可以先将所有配置合并到src/main/resources下的application.properties中测试,参考配置如下:
# 可先注释profile激活,验证基础配置是否正常 # spring.profiles.active=dev spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update spring.jpa.database=DERBY spring.jpa.show-sql=true spring.datasource.continue-on-error=false spring.datasource.generate-unique-name=true spring.datasource.url=jdbc:derby:memory:local;create=true spring.datasource.username=derbyuser spring.datasource.password=password spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
2. 依赖冗余冲突处理
你的pom.xml中存在多处不需要的显式依赖,spring-boot-starter-web和spring-boot-starter-data-jpa已经包含了spring-context、spring-web、spring-boot-autoconfigure相关依赖,手动指定版本可能出现兼容问题,导致自动配置类失效。
调整后的依赖段参考如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
3. 兜底处理方案
如果调整后仍报错,且确认当前项目不需要使用数据源,可以在启动类注解中排除数据源自动配置:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
内容的提问来源于stack exchange,提问作者Pavan Dittakavi
相关产品推荐
相关产品推荐

