0

これはログtxtです

error:[_47Baby.DBModule.Fun1.FunDB2.InserPlayer]Safemode detected an error 'not master'. (Response was { "err" : "not master", "code" : 10054, "n" : 0, "connectionId" : 7, "ok" : 1.0 }).

セットアップは、1 つのマスターと 2 つのスレーブです。

スレーブの読み取りの 1 つが成功しましたが、別のスレーブがエラーです。メッセージはセーフモードでエラーが検出され、'マスターではありません' です。

サーバー文字列「mongodb:// * * /databasename?safe=true;slaveok=true」を既に設定しています

4

2 に答える 2

1

この例外が発生したときに、どのドライバー メソッドを呼び出しましたか? すべての操作をスレーブに送信できるわけではありません。

接続文字列 ("**" の部分) に単一のホスト名を付けていますか? それとも、レプリカ セットの複数のメンバーを含むシードリストを作成していますか?

役立つスタックトレースを提供できれば。

于 2012-05-02T15:07:39.120 に答える
0

MongoDB v2.2 以降、スレーブ/セカンダリからの読み取りを許可する別の方法が可能になり、何が起こるかをより細かく制御できるようになりました。読み取り設定を参照してください。

したがって、これはあなたにとって興味深いものであり、サーバー文字列パラメーターを使用するよりもうまく機能する可能性があります。

(以下は Java ドライバーの例ですが、C# にも十分近いはずです)

この新しいメソッドの基本はReadPreference、データベースのクエリに使用する DBCursor に型を渡すことです。

ReadPreference preference = ReadPreference.secondaryPreferred();
DBCursor cursor = new DBCursor(collection, query, null, preference);

ソース:優先モードの読み取り¶

于 2013-12-08T02:46:25.973 に答える