Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Webflux不考虑数据库名称MongoDB的配置_Java_Spring_Mongodb_Spring Webflux - Fatal编程技术网

Java Spring Webflux不考虑数据库名称MongoDB的配置

Java Spring Webflux不考虑数据库名称MongoDB的配置,java,spring,mongodb,spring-webflux,Java,Spring,Mongodb,Spring Webflux,我正在尝试用SpringWebFlux和MongoDB实现一个反应式应用程序。 我在application.properties文件中有以下配置: spring.data.mongodb.database=my-db spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db 但是,当我尝试将一些文档保存到MongoDB时,我遇到以下错误: backend_1 | Caused by: com.mongodb.MongoComma

我正在尝试用SpringWebFlux和MongoDB实现一个反应式应用程序。 我在application.properties文件中有以下配置:

spring.data.mongodb.database=my-db
spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db
但是,当我尝试将一些文档保存到MongoDB时,我遇到以下错误:

backend_1   | Caused by: com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'not authorized on test to execute command { insert: "user", ordered: true, $db: "test" }' on server database:27017. The full response is { "ok" : 0.0, "errmsg" : "not authorized on test to execute command { insert: \"user\", ordered: true, $db: \"test\" }", "code" : 13, "codeName" : "Unauthorized" }
backend_1   |   at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:179) ~[mongodb-driver-core-3.8.2.jar:na]
backend_1   |   at com.mongodb.internal.connection.InternalStreamConnection$2$1.onResult(InternalStreamConnection.java:370) ~[mongodb-driver-core-3.8.2.jar:na]
我简直无法理解为什么驱动程序不尊重数据库名称的配置,并试图插入数据库测试(因此失败)。 我错过什么了吗


还有一件事是,我正在使用docker compose的单独容器中使用Java后端和MongoDB。

我找到了身份验证问题的解决方案。 我缺少的是authSource,所以我在数据库URI中添加了它,它就工作了

spring.data.mongodb.uri=mongodb://user:pass@host:port/my-db?authSource=admin

但是,我仍然不明白为什么Java后端创建的文档被插入到测试数据库中,而不是我配置为使用的数据库中。

将其放入application.properties文件:

# MongoDB
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=my-db
spring.data.mongodb.username=username
spring.data.mongodb.password=password