android - 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)
以下是我发现并尝试过的一些对我不起作用的修复程序
- 卸载模拟器中的应用程序并重新运行程序。
- 重启mongod.exe
- 将权限添加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
到我的 AndroidManifest.XML 文件
我不确定这是否重要,但我的 MongoDB 版本没有。是4.2,任何帮助表示赞赏。
解决方案
推荐阅读
- dart - 这是基于地图的课程吗?或者可能有两种类型的类?
- python - 通过 Python 数据框中的 RegEx 删除不同的文本短语
- google-chrome - 301重定向后如何防止chrome从磁盘缓存中加载index.html
- asp.net-core-mvc - Asp.Net Core 版本冲突
- ruby-on-rails - 在 rails i18n 和 bootstrap datepicker 之间同步日期格式
- keras - 训练损失可用,但 val_loss = nan
- kotlin - 如何选择要抓取的特定文本
- excel - 从单元格向不同地址发送电子邮件
- javascript - 返回一个变量并将其传递给视图
- android - IONIC CORS 的噩梦……签名的 APK 仍然需要“Access-Control-Allow-Origin”才能运行