it-swarm.com.de

MongoDB-Fehler: Der Befehl 'readMode' kann nicht verwendet werden

Also entwickelte ich ein Projekt mit Mongo und bekam nach der Ausführung des Codes einen Fehler: db.usercollection.insert({ "username" : "testuser1", "email" : "[email protected]" })

Der angezeigte Fehler war:

Cannot use 'commands' readMode, degrading to 'legacy' mode WriteResult({
        "writeError" : {
                "code" : 13,
                "errmsg" : "not authorized on watersheds to execute command { insert: \"usercollection\", documents: [ { _id: ObjectId('568d0eda45d472b121116bef'), username: \"testuser1\", email: \"[email protected]\" } ], ordered: true }"
        } })

Die db.version () ist 3.0.7 und ich habe die MongoDB Shell-Version 3.2.0 installiert

Wie soll ich das beheben?

Grüße, Daryll

7
dgnebres
db.getCollection(collectionName).count({});
db.getCollection(collectionName).find({});

Es klappt! Vielleicht braucht der Mongo eine andere Operation.

3
Geraint

Ich starte einfach den Mongod-Prozess neu und arbeite für mich.

2
harryssuperman

Erweitere den Kommentar von @ Buzut oben ...

Ich bin gerade auf diesen Fehler gestoßen. Für mich war das Problem ein Versionsunterschied zwischen dem lokal ausgeführten Client und der Version der Mongo-Datenbank in der Cloud. 

Um zu überprüfen, ob dies Ihr Problem ist, führen Sie mongo --version lokal aus und notieren Sie sich die Versionsnummer. Verbinden Sie sich dann mit Ihrer Mongo-Db-Shell und führen Sie db.version() aus, um die Version dort zu überprüfen.

Wenn es einen großen Unterschied zwischen diesen Zahlen gibt (z. B. bei einem Client der Version 3 und einer Datenbank der Version 2), müssen Sie wahrscheinlich zu einer Clientversion wechseln, die näher an Ihrer Datenbankversion liegt. 

Gehen Sie dazu in das Mongo-Downloadcenter: https://www.mongodb.com/download-center#production

Wählen Sie Ihre Plattform aus, klicken Sie auf "Alle Version Binaries" und suchen Sie nach einem Download, der Ihrer gehosteten Datenbank entspricht. 

Dadurch wird eine komprimierte Datei heruntergeladen, die Sie entpacken müssen. Und drinnen wird es einen Ordner geben. Verwenden Sie einfach den Pfad zur ausführbaren Datei/bin/mongo (in diesem Ordner), um Ihre Mongo-Befehle auszuführen. Zum Beispiel:

/path/to/downloads/mongodb-osx-x86_64-2.6.9/bin/mongo <whatever mongo commands you want>

Hoffentlich hilft das.

1
Malcolm Diggs

Ich weiß nicht, ob Sie Opfer von replica set sind und Primary db verloren haben oder nicht.
Wenn dies der Fall ist, erstellen Sie den primären neu oder verwenden Sie diesen Befehl vor dem Einfügen.

db.getMongo().setSlaveOk();
0
Amir