java - 尝试将数据插入 Atlast 服务器上的集合时,命令失败并出现错误 8000 (AtlasError)
问题描述
我正在使用 mongoDB Atlas 创建一个 mongodb。一切似乎都很好。当我运行程序时,服务器连接成功。但是,当我尝试将数据插入集合时,它给了我错误“命令失败,错误 8000 (AtlasError)”。我在另一篇文章中读到,说我必须使用不同的数据库名称,但这仍然不起作用。我对此很陌生,所以任何帮助都将不胜感激。这是我的代码
public class DbController2<DBObject> {
MongoClientURI uri;
MongoClient mongoClient;
MongoDatabase database;
MongoCollection<Document> collection;
public DbController2() {
uri = new MongoClientURI(
"mongodb://dbEfish:PASSWORD@cluster0-shard-00-00-klemt.mongodb.net:27017,cluster0-shard-00-01-klemt.mongodb.net:27017,cluster0-shard-00-02-klemt.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true");
mongoClient = new MongoClient(uri);
database = mongoClient.getDatabase("eFishDB");
collection = database.getCollection("controlVar");
}
public Document toDBObject(String key, String[] dataPoints) {
return new Document("_id", key)
.append("Water Level", dataPoints[0])
.append("Water Temperature", dataPoints[1])
.append("pH Level", dataPoints[2])
.append("Nitrate Level", dataPoints[3])
.append("Oxygen Level", dataPoints[4])
.append("Ammonia Level", dataPoints[5])
.append("Light Intensity", dataPoints[6])
.append("Air Temperature", dataPoints[7]);
}
public void insert(String key, String[] dataPoints) {
//((DBCollection) collection).insert((com.mongodb.DBObject[]) this.toDBObject(key, dataPoints));
collection.insertOne(this.toDBObject(key, dataPoints));
}
}
这是错误日志: INFO: Closed connection [connectionId{localValue:4}] to cluster0-shard-00-00-klemt.mongodb.net:27017 因为此连接引发了套接字异常。线程“AWT-EventQueue-0”com.mongodb.MongoSecurityException 中的异常:在 com 处验证 MongoCredential{mechanism=SCRAM-SHA-1,userName='dbEfish',source='admin',password=,mechanismProperties={}} 的异常.mongodb.internal.connection.SaslAuthenticator.wrapException(SaslAuthenticator.java:173) 在 com.mongodb.internal.connection.SaslAuthenticator.access$300(SaslAuthenticator.java:40) 在 com.mongodb.internal.connection.SaslAuthenticator$1.run (SaslAuthenticator.java:70) 在 com.mongodb.internal.connection.SaslAuthenticator$1.run(SaslAuthenticator.java:47) 在 com.mongodb.internal.connection.SaslAuthenticator。pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(未知来源)原因:com.mongodb.MongoCommandException:命令失败,错误 8000(AtlasError):'bad auth Authentication failed。' 在服务器 cluster0-shard-00-00-klemt.mongodb.net:27017 上。com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException( ProtocolHelper.java:187)在 com.mongodb.internal.connection.InternalStreamConnection。
解决方案
如果 MOngoDb atlas 云凭证和云详细信息 [IP/URL] 正确,则这是您选择用于连接应用程序的驱动程序的问题。我遇到了同样的问题,根本原因是应用程序和 mongodb 连接字符串中的驱动程序版本不匹配。
mongodb: //testatlasCloud:sedXhdsghgK24RGJxF@firstvm-shard-00-00-n6ojx.mongodb.net:27017,firstvm-shard-00-01-n6ojx.mongodb.net:27017,firstvm-shard-00-02-n6ojx。 mongodb.net:27017/firstvmDB?ssl=true&replicaSet=firstvm-shard-0&authSource=admin&retryWrites=true&w=majority");
mongodb+srv:// 对我不起作用,因为我使用的是旧的 mongo 驱动程序版本。
推荐阅读
- html - 正文和页脚的动态高度的布局问题
- javascript - HTML 溢出不滚动
- python - 如何连接到我网络中的套接字服务器?
- reactjs - 当用户选择一个选项但随后将其更改为另一个选项时,React 崩溃而不显示错误
- r - 如何在保持子文件夹结构的同时在 R 中复制和压缩文件
- reactjs - 导入函数反应组件时出错
- python - Python包将两个热图合二为一(将每个正方形分成两个三角形)
- google-cloud-platform - 使用 Dataflow 的 DLP 从 GCS 读取并写入 BigQuery - 只有 50% 的数据写入 BigQuery
- python - 带有特殊字符的 String.replace() 仅替换其中一些字符
- babeljs - Babel 配置/不一致问题