Сбой команды с ошибкой 8000 (ошибка AtlasError) при попытке вставить данные в коллекцию на сервере Atlast

#java #eclipse #mongodb

#java #eclipse #mongodb

Вопрос:

Я создаю mongodb с использованием MongoDB Atlas. Кажется, все в порядке. Когда я запустил программу, сервер успешно подключился. Однако, когда я попытался вставить данные в коллекцию, он выдал мне сообщение об ошибке «Команда не удалась с ошибкой 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=trueamp;replicaSet=Cluster0-shard-0amp;authSource=adminamp;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));
}
 

}

Вот журнал ошибок: ИНФОРМАЦИЯ: Закрытое соединение [connectionId{localValue:4}] с cluster0-shard-00-00- klemt.mongodb.net:27017, потому что это соединение вызвало исключение сокета. Исключение в потоке «AWT-EventQueue-0» com.mongodb.MongoSecurityException: Исключение аутентификации MongoCredential{mechanism= SCRAM-SHA-1, userName= ‘dbEfish’, source = ‘admin’, password=, mechanismProperties={}} в com.mongodb.internal.connection.SaslAuthenticator.Исключение wrapException(SaslAuthenticator.java: 173) в com.mongodb.internal.connection.SaslAuthenticator.access$ 300 (SaslAuthenticator.java: 40) в com.mongodb.internal.connection.SaslAuthenticator $ 1.запустите (SaslAuthenticator.java:70) в com.mongodb.internal.connection.SaslAuthenticator $ 1.запустите (SaslAuthenticator.java:47) в com.mongodb.internal.connection.SaslAuthenticator.doAsSubject(SaslAuthenticator.java: 179) в com.mongodb.internal.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java: 47) в com.mongodb.internal.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:152) на com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:63) в com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) в com.mongodb.internal.connection.UsageTrackingInternalConnection.open(UsageTrackingInternalConnection.java:50) в com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.open(DefaultConnectionPool.java:398) в com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java:115) в com.mongodb.internal.connection.DefaultConnectionPool.get(DefaultConnectionPool.java: 101) в com.mongodb.internal.connection.defaultServer.getConnection(defaultServer.java:85) в com.mongodb.binding.Привязка к кластеру $ClusterBindingConnectionSource.getConnection(ClusterBinding.java:124) в com.mongodb.client.internal.Привязка клиентской сессии к $SessionBindingConnectionSource.getConnection(ClientSessionBinding.java:136) в com.mongodb.operation.OperationHelper.withReleasableConnection(OperationHelper.java:424) в com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:194) на com.mongodb.operation.MixedBulkWriteOperation.execute(MixedBulkWriteOperation.java:69) в com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:198) в com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:961) в com.mongodb.client.internal.MongoCollectionImpl.executeInsertOne(MongoCollectionImpl.java:495) в com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:479) в com.mongodb.client.internal.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:473) в DbController2.insert(DbController2.java:37) в EFishGreen $ 4.Выполнено действие (EFishGreen.java:131) в javax.swing.AbstractButton.fireactionпереработан (неизвестный источник) в javax.swing.AbstractButton$Handler.actionпереработан (неизвестный источник) в javax.swing.DefaultButtonModel.fireactionпереработан (неизвестный источник) в javax.swing.DefaultButtonModel.setPressed(неизвестный источник) в javax.swing.plaf.basic.BasicButtonListener.mouseReleased(неизвестный источник) в java.awt.Component.processMouseEvent(неизвестный источник) в javax.качели.JComponent.processMouseEvent(неизвестный источник) в java.awt.Component.processEvent(неизвестный источник) в java.awt.Container.processEvent(неизвестный источник) в java.awt.Component.dispatchEventImpl(неизвестный источник) в java.awt.Container.dispatchEventImpl(неизвестный источник).Component.dispatchEvent(неизвестный источник) в java.awt.LightweightDispatcher.retargetMouseEvent(неизвестный источник) в java.awt.LightweightDispatcher.processMouseEvent(неизвестный источник) в java.awt.LightweightDispatcher.dispatchEvent(неизвестный источник) в java.awt.Container.dispatchEventImpl(неизвестный источник) Источник) в java.awt.Window.dispatchEventImpl(неизвестный источник) в java.awt.Component.dispatchEvent(неизвестный источник) в java.awt.EventQueue.dispatchEventImpl (неизвестный источник) в java.awt.EventQueue.доступ к 500 долларам США (неизвестный источник) в java.awt.EventQueue $ 3.запуск (неизвестный источник) в java.awt.EventQueue $ 3.запуск (неизвестный источник) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $JavaSecurityAccessImpl.doIntersectionPrivilege (неизвестный источник) на java.Безопасность.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (неизвестный источник) в java.awt.EventQueue $4.run(неизвестный источник) в java.awt.EventQueue $ 4.run(неизвестный источник) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain $JavaSecurityAccessImpl.doIntersectionPrivilege (неизвестный источник) в java.awt.EventQueue.dispatchEvent(неизвестный источник) в java.awt.EventDispatchThread.pumpponeeventforfilters (неизвестный источник) в java.awt.EventDispatchThread.pumpEventsForFilter(неизвестный источник) в java.awt.EventDispatchThread.pumpeventsforchierarchy(неизвестный источник) в java.awt. EventDispatchThread.pumpEvents(неизвестный источник) в java.awt.EventDispatchThread.События pumpEvents (неизвестный источник) в java.awt.EventDispatchThread.run (неизвестный источник), вызванные: com.mongodb.MongoCommandException: сбой команды с ошибкой 8000 (ошибка AtlasError): «ошибка аутентификации с ошибкой аутентификации». на сервере cluster0-shard-00-00- klemt.mongodb.net:27017. Полный ответ {«ok»: 0, «errmsg»: «ошибка аутентификации при проверке подлинности.», «code»: 8000, «codeName»: «AtlasError»} на com.mongodb.internal.connection.Исключение ProtocolHelper.getCommandFailureException(ProtocolHelper.java:187) в com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:303) в com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:259) в com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) в com.mongodb.internal.connection.CommandHelper.ExecuteCommand(CommandHelper.java: 33) в com.mongodb.internal.connection.SaslAuthenticator.sendSaslContinue(SaslAuthenticator.java:134) в com.mongodb.internal.connection.SaslAuthenticator.access $ 200 (SaslAuthenticator.java: 40) в com.mongodb.internal.connection.SaslAuthenticator$1.выполнить (SaslAuthenticator.java:67) … еще 59

Комментарии:

1. Вы указали пароль своей базы данных в этом вопросе — вы, вероятно, захотите его обновить

2. Большое вам спасибо. Я так устал и расстроен, что совершенно забыл об этом.

3. Это ошибка аутентификации, и это в основном означает, что ваше имя пользователя и пароль неверны или, по крайней мере, не найдены в authSource . Также обратите внимание, что authSource это необязательно и не должно требоваться там, где пространство фактически admin (как и должно быть) И где вы не включаете пространство имен базы данных в URI. Поэтому удалите test из URI и проверьте свои учетные данные. Кроме того, не должно быть необходимости не использовать mongodb srv форму URI с современной версией драйвера. Если ваш драйвер старше, я настоятельно рекомендую обновить и использовать современную форму URI.

4. Пожалуйста, отредактируйте свой вопрос, чтобы включить конкретный драйвер и версию, которую вы используете. Как указано в предоставленном вами журнале ошибок, произошла ошибка аутентификации, которая предполагает, что у вас проблема с предоставленным драйвером или учетными данными. Я надеюсь, что вы настроили соответствующий белый список, чтобы ограничить подключения к вашему развертыванию Atlas. Тем не менее, я бы рекомендовал изменить ваш пароль, поскольку он все еще отображается в истории редактирования для этого вопроса.

Ответ №1:

Если учетные данные MongoDB atlas cloud и сведения об облаке [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=trueamp;replicaSet=firstvm-shard-0amp;authSource=adminamp;retryWrites=trueamp;w=majority»);

mongodb srv:// не работает у меня, потому что я использую старую версию драйвера mongo.