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

MongoDB过早到达流结束

梁丘烨
2023-03-14

当我试图连接到MongoDB Atlas免费层时,我得到了一个过早到达流结束的错误。使用Java1.8和Mongo驱动程序3.8.0。这和Atlas中的集群设置有什么关系吗?我在MongoDB本地主机上使用了相同的程序。

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoTest {

public static void main(String args[]) {

    MongoClientURI uri = new MongoClientURI(
            "mongodb://username:password@cluster0-****.mongodb.net");

    MongoClient mongoClient = new MongoClient(uri);
    MongoDatabase database = mongoClient.getDatabase("account");

    System.out.println("Hello");

    MongoCollection<Document> collection = database.getCollection("users");

    System.out.println(collection.count());

    mongoClient.close();

  }
}

错误:

    Jul 15, 2018 12:32:04 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[cluster0-****.mongodb.net:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
Hello
Jul 15, 2018 12:32:04 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster description not yet available. Waiting for 30000 ms before timing out
Jul 15, 2018 12:32:04 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Exception in monitor thread while connecting to server cluster0-****.mongodb.net:27017
com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.internal.connection.SocketStream.read(SocketStream.java:92)
at com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:554)
at com.mongodb.internal.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:425)
at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:289)
at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:255)
at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:106)
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:63)
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117)
at java.lang.Thread.run(Thread.java:748)

Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=cluster0-****.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketReadException: Prematurely reached end of stream}}]
at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:179)
at com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:41)
at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:136)
at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:94)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:249)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:172)
at com.mongodb.client.internal.MongoCollectionImpl.executeCount(MongoCollectionImpl.java:248)
at com.mongodb.client.internal.MongoCollectionImpl.count(MongoCollectionImpl.java:183)
at com.mongodb.client.internal.MongoCollectionImpl.count(MongoCollectionImpl.java:171)
at MongoTest.main(MongoTest.java:21)

共有1个答案

拓拔泓
2023-03-14

确保您已经将您的客户端地址(通过在Google中键入“What is my IP address”很容易找到)添加到集群的IP白名单中。没有这一点,您将无法连接。

IP白名单在security选项卡下。

 类似资料:
  • 我有一个简单的数据结构(下面引用的)要插入到MongoDB中: 我得到以下错误堆栈: 我的mongodb版本是。 更新2 该系统可用于其他写入(即使是大得多的记录)

  • 在我的应用程序中,我使用MongoDB,它在本地与Wildfly 11.0.0一起工作得很好。Alpha1-部署在本地应用程序服务器和本地MongoDB数据库后,应用程序可以在上下文路径和端口上访问-一切都很好。 我的下一步是将这个应用程序部署到服务器maschine上的JBoss服务器上。我将MongoDB URI更改为MongoDB服务器: 如果我部署这个应用程序,我会在底部得到以下日志条目。

  • 我试图解密和验证一个加密的文件,但得到一个异常java。伊奥。EOFEException:执行完整性检查时,PartialInputStream中的流过早结束。数据被正确解密,签名被检查。 异常发生在pbe中。验证()。 有人知道为什么会发生这种情况,以及如何解决它吗? 我在1.51版上使用JDK15。 代码如下: 完整的堆栈跟踪:

  • 问题内容: 我刚刚开始尝试在Node.js应用程序上实现Promises。现在,我正在检查用户和密码是否存在,然后使用mongodb来查找未找到用户的用户和密码,它会设置promise.reject(),但是它返回的promise太早了,它仍然处于未决状态。如果有人可以帮助或给我有关如何重构的想法,将不胜感激。 https://gist.github.com/joshbedo/8957056 问题

  • 问题内容: 一段时间不活动后,在调用(默认Java驱动程序)时收到此错误。我尝试添加手动心跳(写到有上限的收藏集),但没有帮助。我只有在撰写时连接到实例时才收到问题(即不在本地上下文中)。 MongoDB版本为3.2.8,最新驱动程序(3.3),使用Java 8。 任何想法 ? 问题答案: 我同意Rhangaun的回答,这是我在JAVA代码中的解决方案: 这是我的研究链接:http: //3t.i