2013-04-02 5 views
7

マイモンゴデータベースは、カスタム名を持ついくつかのインデックスを持っています。Mongorestore:「NS名が長すぎる」エラーで失敗することなく、自動的に名前を生成するために、それらの中にあまりにも多くのフィールドがあるので、nsの名前が長すぎる、最大サイズは128

私はmongorestoreを使用してバックアップからこのデータベースを復元しよう - それはこの非常にエラー(「NSはあまりにも長い間、最大サイズは128である名」)で失敗します。 mongorestoreは、実際にデータベースで使用された名前を復元するのではなく、内容に基づいてインデックス名を生成しようとしているようです。

私がこれまでに思い描いた唯一の解決策は、--noIndexRestoreを使用してmongorestoreを使用し、後ですべてのインデックスを手動で再作成することですが、これは明らかにひどい方法です。これを解決する良い方法がありますか?

MongoDB 2.4.1でこの問題が発生しています。

ありがとうございました。ダンプ中に存在していたインデックスを再作成するとき

+0

MongoDB Bugtrackerでこの問題のチケットを申請したとお考えですか?ドキュメント(http://docs.mongodb.org/manual/reference/mongorestore/)の説明から、私はこれをバグだと考えます。 mongodumpでダンプを作成した場合、mongorestoreは正確な状態を再び復元できるはずです。 – philnate

+0

ありがとう! – freetonik

+2

完了https://jira.mongodb.org/browse/SERVER-9404 – freetonik

答えて

1

mongorestoreは、同じ名前を使用しています。これらの名前が2.2以降の.metadata.jsonファイルにあったのは2.2の前に.system.indexes.bsonファイル(これはBSONにあり、bsondumpコマンドを使って調べることができます)に入っていました。

このエラーが発生する可能性がある方法の1つは、別の名前のデータベースまたはコレクションに復元する場合で、新しい名前が元の名前よりも長い場合です。元のデータベース名とコレクション名を使用する場合は、元の索引名(カスタムまたはデフォルト)が使用され、正式な名前になります。

関連する問題