Ich habe eine eigenständige Mongo-Instanz, auf der eine Replikatgruppe ausgeführt wird. Ich kann jedoch keine Verbindung herstellen und keine Abfragen in der Mongo-Shell ausführen. Ich bekomme Folgendes:
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
Ich setze SlaveOk so:
db.getMongo().setSlaveOk()
.. aber ich bekomme immer noch einen Fehler:
%Vor%Ich kann keine direkte Antwort auf Google finden: Wie stelle ich eine Verbindung zu meinem Replikat mit der Mongo-Shell her?
Wenn Sie eine Verbindung zu einem Knoten in einem Replikatsatz herstellen, der nicht der Master ist, müssen Sie dem Client explizit mitteilen, dass es in Ordnung ist, dass Sie nicht mit einem Master verbunden sind.
Sie können dies tun, indem Sie
aufrufenrs.slaveOk ()
Sie können dann Ihre Abfrage durchführen.
Beachten Sie, dass Sie nur dann Abfragen durchführen und keine Änderungen am Repository vornehmen können, wenn Sie mit einem Slave-Knoten verbunden sind.
Sie sind mit einem Knoten verbunden, der weder sekundär noch primär ist. Dieser Knoten könnte im Wiederherstellungsmodus ein Arbiter oder möglicherweise ein sekundärer Knoten sein. Wenn ich zum Beispiel einen Replikatsatz von 3 Knoten hätte (wo es einen primären, einen sekundären und einen Arbiter gibt), würde ich denselben Fehler erhalten, wenn ich mit dem Arbiter verbunden wäre und eine Abfrage ausgegeben hätte, selbst nachdem ich slaveOK auf true gesetzt habe . Die Befehlszeilenaufforderung der Shell sollte angeben, in welchem Status sich der Knoten befindet, mit dem Sie verbunden sind:
%Vor%Dieser Fehler wird nur angezeigt, wenn Sie eine Instanz ausführen, die Teil eines Replikats im eigenständigen Modus ist, ohne es vollständig aus dem Replikatsatz zu entfernen. z.B. Sie starten Ihre Instanz an einem anderen Port neu, entfernen aber nicht die Option --repSet beim Starten. Dies beginnt aber weder als primäres noch als sekundäres, daher der Fehler nicht Master oder sekundär;
Je nachdem, was Sie ursprünglich tun wollten, starten Sie die Instanz entweder am richtigen Port und mit der richtigen Option --repSet neu. Dies fügt es dem Replikatset hinzu und beseitigt diesen Fehler
Wenn Sie beabsichtigen, die Instanz für einige Zeit als Standalone auszuführen (zB um einen Index zu erstellen), dann starten Sie sie an einem anderen Port OHNE die Option --repSet
Ich habe den gleichen Fehler beim Ausführen von aggregate () auf dem Staging-Server mit zwei Replikat-Sätzen erhalten. Ich denke, dass Sie die Lese-Präferenz zu 'secondaryPreferred' ändern müssen.
Schreiben Sie einfach .read ('secondaryPreferred') nach der Abfragefunktion.
Tags und Links mongodb