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
JavaSpring/MongoDb仅在使用URI字段时有效_Java_Spring_Spring Boot_Spring Data_Uri - Fatal编程技术网

JavaSpring/MongoDb仅在使用URI字段时有效

JavaSpring/MongoDb仅在使用URI字段时有效,java,spring,spring-boot,spring-data,uri,Java,Spring,Spring Boot,Spring Data,Uri,我的处境很奇怪。我正在运行一个连接到MongoDb实例的JavaSpring启动应用程序。当我使用 spring.data.mongodb.uri=mongodb://{username}:{password}@{host} 菲尔德,我接得很好。但当我使用: spring.data.mongodb.host={host} spring.data.mongodb.username={username} spring.data.mongodb.password={password} 我的身份验证失

我的处境很奇怪。我正在运行一个连接到MongoDb实例的JavaSpring启动应用程序。当我使用

spring.data.mongodb.uri=mongodb://{username}:{password}@{host}

菲尔德,我接得很好。但当我使用:

spring.data.mongodb.host={host}
spring.data.mongodb.username={username}
spring.data.mongodb.password={password}
我的身份验证失败。有什么好处?当然,大括号中的值完全相同

我在两种设置中都包含了这些内容:

spring.data.mongodb.authentication-database={auth-db}
spring.data.mongodb.database={mydb}
其他详细信息

非uri方法在一个环境中工作,但不是我试图修复的环境

在同一Docker Swarm中运行两台服务器

Mongo ReplicaSet版本4.0.4


Java 8

我无法发表评论,因此必须回答

是否尝试添加数据库名称?希望这能奏效。
spring.data.mongodb.database=

这似乎不再受支持。 引用自:

如果使用Mongo3.0Java驱动程序,
spring.data.mongodb.host
spring.data.mongodb.port不受支持。在这种情况下,
spring.data.mongodb.uri应用于提供所有
配置

试试这个

spring.data.mongodb.host={host}
spring.data.mongodb.port={port}
spring.data.mongodb.username={username}
spring.data.mongodb.password={password}
spring.data.mongodb.database={database}

这对我有效。

您是否尝试在
spring.data.mongodb.port=
中拆分主机和端口?从文档中看,似乎主机和端口都是预期的:我没有添加端口,因为它只是默认值(27017)。没错,它说
如果没有指定spring.data.mongodb.port,则使用默认值27017。您可以从前面显示的示例中删除此行。
。最初遗漏了该部分。用户或密码的URL表单是否包含任何%或+字符?否!用户名和密码只是数字和字母。主机名有一个“.”我试过了,运气不好。请注意,我还没有将其添加到URI中,但我仍然可以连接。如果我离开数据库,则身份验证失败。但我有多个数据库,这是有道理的。我试过设置数据库和身份验证数据库。仍然获取身份验证失败。您已经阅读了吗。31.2.1连接到MongoDB数据库。文档不正确。在我的底层环境中,使用.host和.port约定,我可以很好地连接。是我的高级环境(设置相同,使用完全相同的docker映像)不起作用。@SedkyA,似乎无法从“高级环境”访问您的数据库。@SedkyA,您能详细说明高级环境的含义吗?它本质上是一个群中节点较多的环境。这是无关紧要的,它只意味着它是另一个具有完全相同架构的环境。一个我可以使用host/user/pwd连接,另一个我必须使用URI