Spring Boot集成MongoDB无法连接指定doteco数据库求助
解决Spring Boot连接MongoDB始终默认使用test数据库的问题
问题描述
使用Spring Boot + MongoDB搭建项目时,配置了连接doteco数据库,但程序始终默认连接test库并创建集合写入数据,尝试两种配置方式均无效:
# 配置方式1 spring.data.mongodb.uri=mongodb://localhost:27017 spring.data.mongodb.database=doteco # 配置方式2 spring.data.mongodb.uri=mongodb://localhost:27017/doteco
解决步骤
1. 确认配置文件有效性
- 确保
application.properties(或application.yml)位于src/main/resources目录,无拼写错误。 - 排查是否存在高优先级配置源覆盖当前设置:
- 环境变量
SPRING_DATA_MONGODB_DATABASE/SPRING_DATA_MONGODB_URI - 启动命令行参数(如
--spring.data.mongodb.database=test) - 环境专属配置文件(如
application-dev.properties)
- 环境变量
2. 验证实际连接的数据库
添加CommandLineRunner Bean,打印当前MongoTemplate连接的数据库名称,确认配置是否生效:
@SpringBootApplication @EnableMongoRepositories public class DotecoApplication { public static void main(String[] args) { SpringApplication.run(DotecoApplication.class); } @Bean public CommandLineRunner checkMongoConnection(MongoTemplate mongoTemplate) { return args -> { System.out.println("当前连接的MongoDB数据库: " + mongoTemplate.getDb().getName()); }; } }
启动后查看控制台:
- 若输出
test,说明配置未生效,需继续排查配置源; - 若输出
doteco,则检查是否连接了错误的MongoDB实例。
3. 检查@EnableMongoRepositories配置
确保未手动指定databaseName属性(该属性会覆盖配置文件设置):
// 错误示例,需避免 @EnableMongoRepositories(databaseName = "test")
若仓库接口不在启动类子包下,需指定basePackages参数,但能写入test库说明扫描正常。
4. 清理项目缓存
- 执行构建工具清理命令:
- Maven:
mvn clean install - Gradle:
./gradlew clean build
- Maven:
- IntelliJ清理缓存:
File -> Invalidate Caches... -> 勾选"Clear file system cache and local history" -> 点击Invalidate and Restart
5. 手动创建目标数据库
登录MongoDB Shell,手动创建doteco数据库:
use doteco db.createCollection("words")
重启项目后验证数据是否写入该数据库。
6. 检查版本兼容性
确保Spring Boot与MongoDB驱动版本兼容:
- Spring Boot 2.x 对应 MongoDB驱动 3.x
- Spring Boot 3.x 对应 MongoDB驱动 4.x
可通过pom.xml或build.gradle确认依赖版本,避免因版本不兼容导致配置失效。
内容的提问来源于stack exchange,提问作者Spz
相关产品推荐
相关产品推荐

