首页 > 解决方案 > java.net.ConnectException Connection 拒绝尝试连接到 Kotlin 中的 localhost mongo DB

问题描述

我目前正在尝试使用 mongo DB 作为我的数据库来制作一个简单的登录系统,但是在使用 Kotlin 测试 mongo DB 时出现错误,我无法通过 localhost 连接到我的数据库。这是我用来连接数据库的代码:

var mongoClient: MongoClient? = null
    try {
        mongoClient = MongoClient("127.0.0.1", 27017)
        var db = mongoClient.getDatabase("users")
        var tbl = db.getCollection("user_details")

        val searchQry = BasicDBObject()
        searchQry.put("johndoe1","Password1")

        var cursor = tbl.find(searchQry)

        var it = cursor.iterator()
        while (it.hasNext()) {
            System.out.println(it.next())
        }
    } catch (e: MongoException) {
        e.printStackTrace()
    } finally {
        mongoClient!!.close()
    }

目前我只是试图在数据库中检索一些示例数据以验证它是否有效,但是当程序运行时我收到以下消息。

2020-11-22 18:39:08.722 9407-9432/com.example.dbtesting I/cluster: Exception in monitor thread while connecting to server 127.0.0.1:27017
    com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70)
        at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128)
        at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117)
        at java.lang.Thread.run(Thread.java:923)
     Caused by: java.net.ConnectException: failed to connect to /127.0.0.1 (port 27017) from /127.0.0.1 (port 34562) after 20000ms: isConnected failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.isConnected(IoBridge.java:287)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:192)
        at libcore.io.IoBridge.connect(IoBridge.java:134)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64)
        at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79)
        at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65)
        at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) 
        at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) 
        at java.lang.Thread.run(Thread.java:923) 
     Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.isConnected(IoBridge.java:274)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:192) 
        at libcore.io.IoBridge.connect(IoBridge.java:134) 
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
        at java.net.Socket.connect(Socket.java:621) 
        at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:64) 
        at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) 
        at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) 
        at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) 
        at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) 
        at java.lang.Thread.run(Thread.java:923) 
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: failed to connect to /127.0.0.1 (port 27017) from /127.0.0.1 (port 34682) after 20000ms: isConnected failed: ECONNREFUSED (Connection refused)}, caused by {android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)}}]
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:182)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:41)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:150)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:102)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:282)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:186)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:143)
2020-11-22 18:39:38.744 9407-9407/com.example.dbtesting W/System.err:     at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:92)

以下是我发现并尝试过的一些对我不起作用的修复程序

我不确定这是否重要,但我的 MongoDB 版本没有。是4.2,任何帮助表示赞赏。

标签: androidmongodbkotlin

解决方案


推荐阅读