7

別のサーバーからデータベースをダンプしてから(これは正常に機能します)、新しいサーバーに復元しようとしています(これは正常に機能しません)。

私は最初に実行します:

mongodump --host -d

これにより、dump/dbすべてのbsonドキュメントを含むフォルダーが作成されます。

次に、ダンプフォルダーで、次のコマンドを実行します。

mongorestore -d dbname db

これは機能し、ファイルを繰り返し処理しますが、このエラーが発生しますdbname.system.users

Wed May 23 02:08:05 { key: { _id: 1 }, ns: "dbname.system.users", name: "_id_" }
Error creating index dbname.system.usersassertion: 13111 field not found, expected type 16

これを解決する方法はありますか?

4

4 に答える 4

11

本当に異なるバージョンの場合は、--noIndexRestoreオプションを使用してください。その後、すべてのインデックスを作成します。

于 2013-01-10T08:35:20.220 に答える
7

ソースと宛先が異なるバージョンである可能性はありますか?

いずれの場合も、これを回避するには、-cフラグを使用してコレクションを個別にターゲットDBに復元し、後でインデックスを作成します。システムコレクションはインデックスに使用されるものであるため、再作成は非常に簡単です。他のすべてが復元されたら最後に試してください。それでも失敗する場合は、関連するインデックスをいつでも再作成できます。

于 2012-05-23T14:50:49.140 に答える
3

この問題は、古いバージョンのMongo(私の場合は2.0.8)のこのバグによっても発生する可能性があります。

https://jira.mongodb.org/browse/SERVER-7181

基本的に、13111 field not found, expected type 16認証の詳細を入力するように実際に求められるはずのときにエラーが発生します。

そして、私がそれを修正した方法の例:

root@precise64:/# mongorestore /backups/demand/ondemand.05-24-2013T114223/
connected to: 127.0.0.1
[REDACTED]
Fri May 24 11:48:15      going into namespace [test.system.indexes]
Fri May 24 11:48:15 { key: { _id: 1 }, ns: "test.system.users", name: "_id_" }
Error creating index test.system.usersassertion: 13111 field not found, expected type 16
# Error when not giving username and password

root@precise64:/# mongorestore -u fakeuser -p fakepassword /backups/demand/ondemand.05-24-2013T114223/
connected to: 127.0.0.1
[REDACTED]
Fri May 24 11:57:11 /backups/demand/ondemand.05-24-2013T114223/test/system.users.bson
Fri May 24 11:57:11      going into namespace [test.system.users]
1 objects found
# Works fine when giving username and password! :)

問題を抱えている人が前の2つの返信で修正されないのに役立つことを願っています!

于 2013-05-24T14:09:56.097 に答える
0

これは、MongoDB 2.6以降にmongorestoreを実行しようとしていて、復元しようとしているダンプにsystem.usersadmin以外のデータベースのテーブルが含まれている場合にも発生する可能性があります。MongoDB 2.2および2.4では、system.usersコレクションはどのデータベースでも発生する可能性があります。MongoDB 2.6に関連付けられた認証スキーマの移行により、すべてのユーザーsystem.usersがadminデータベースのテーブルに移動しましたが、他のデータベースのテーブルは残されましたsystem.users(MongoDB 2.6はこれらを無視します)。これにより、MongoDB2.6にインポートするときにこのアサーションが発生するようです。

于 2016-01-28T22:32:39.450 に答える