当前位置: 首页 > 知识库问答 >
问题:

Mongo DB规范地址与服务器地址不匹配

终祯
2023-03-14

我正在将我的spring boot应用程序与mongo db连接。

该代码在本地环境中运行良好,其中数据库只有一个节点,并且没有以集群模式运行。

但是,当db在具有群集模式和单个节点以及1个副本集的临时环境上运行时,spring应用程序会显示以下错误:

INFO  |  |  | 2019-04-18 12:43:25 | [cluster-ClusterId{value='5cb823951a734cea7f7eebe1', description='null'}-10.202.41.254:27017] com.mongodb.diagnostics.logging.SLF4JLogger - Canonical address educationelasticsearch-digital-v1-41-254:27017 does not match server address.  Removing 10.20.41.254:27017 from client view of cluster
INFO  |  |  | 2019-04-18 12:43:25 | [cluster-ClusterId{value='5cb823951a734cea7f7eebe1', description='null'}-educationelasticsearch-digital-v1-41-254:27017] com.mongodb.diagnostics.logging.SLF4JLogger - Exception in monitor thread while connecting to server educationelasticsearch-digital-v1-41-254:27017
com.mongodb.MongoSocketException: educationelasticsearch-digital-v1-41-254: nodename nor servname provided, or not known
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:188) ~[mongodb-driver-core-3.8.2.jar:?]
    at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) ~[mongodb-driver-core-3.8.2.jar:?]
    at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:62) ~[mongodb-driver-core-3.8.2.jar:?]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:126) ~[mongodb-driver-core-3.8.2.jar:?]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) [mongodb-driver-core-3.8.2.jar:?]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: java.net.UnknownHostException: educationelasticsearch-digital-v1-41-254: nodename nor servname provided, or not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[?:1.8.0_171]
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[?:1.8.0_171]
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[?:1.8.0_171]
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276) ~[?:1.8.0_171]
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[?:1.8.0_171]
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[?:1.8.0_171]
    at java.net.InetAddress.getByName(InetAddress.java:1076) ~[?:1.8.0_171]
    at com.mongodb.ServerAddress.getSocketAddress(ServerAddress.java:186) ~[mongodb-driver-core-3.8.2.jar:?]
    ... 5 more

在这两种情况下,应用程序属性都是相同的,只是临时服务器的IP替换了本地主机:

spring.elasticsearch.education.hostname=localhost   // staging server IP
spring.elasticsearch.education.scheme=http
spring.elasticsearch.education.port=9200


###### Mongo properties ########
spring.data.mongodb.host=localhost  //staging server ip
spring.data.mongodb.port=27017
spring.data.mongodb.database=ddddd
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=root
spring.data.mongodb.password=root
spring.data.mongodb.repositories.enabled=true
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG

我检查了这个问题,但没有多少解决方案。

请告诉我这里出了什么问题?

共有1个答案

傅峰
2023-03-14

看这里https://stackoverflow.com/a/34373673/5712629.

也许spring.data.mongodb.host和spring.data.mongodb.port不支持在这个版本的mongoDB驱动程序。

你可以试试:

spring.data.mongodb.uri=mongodb://root:root@localhost:27017

相反

 类似资料:
  • 地址匹配是将文字性的描述地址与其空间的地理位置坐标建立起对应关系的过程。地址匹配服务包含正向匹配与反向匹配两个方面。

  • 我正在尝试使用以下命令运行本地群集: Storm以这个错误响应: 拓扑将提交罚款,当使用与zooManager,灵气,和监管者容器的dockerated设置。我正在使用一个自制的安装Storm在本地运行时,但到目前为止,我在网上找不到任何类似的问题。

  • 我目前正在使用AltBeacon库在Android上开发我的应用程序。 使用该库,当找到信标集合时,将调用的回调,如下所示: 经过测试,我注意到与广告设备的蓝牙MAC地址不匹配。 在广告设备上,我获取蓝牙MAC地址如下: 假设的与广告商的蓝牙MAC地址不同,我错了吗?如果不同,返回的地址是什么? 我如何在广告之前获得广告设备的beacon.getBluetoothAddress()是什么? 任何关

  • 反向地址匹配通过输入地址坐标来获取对应的规范化的地址描述。 // 反向匹配参数 var geoDecodeParam = new SuperMap.GeoDecodingParameter({ x: 116.3518541194, // 横坐标 y: 40.00097839595, // 纵坐标 fromIndex: 0, // 设置返回对象的起始索引值。 toIn

  • 正向地址匹配根据地点描述、范围返回对应的地理坐标和结构化的地址详细描述,支持中文模糊匹配。 // 正向匹配参数 var geoCodeParam = new SuperMap.GeoCodingParameter({ address: "超图软件", // 地址 fromIndex:0, // 设置返回对象的起始索引值 toIndex:10, // 设置返回对象的结束索引值

  • 在上一篇文章中,我们已经初步实现了交易。相信你应该了解了交易中的一些天然属性,这些属性没有丝毫“个人”色彩的存在:在比特币中,没有用户账户,不需要也不会在任何地方存储个人数据(比如姓名,护照号码或者 SSN)。但是,我们总要有某种途径识别出你是交易输出的所有者(也就是说,你拥有在这些输出上锁定的币)。这就是比特币地址(address)需要完成的使命。在上一篇中,我们把一个由用户定义的任意字符串当成