web-dev-qa-db-fra.com

Dump MongoDB à partir de 3.2, restaurer avec 3.4, index d'erreur sécurisé = nul

Je reçois le message d'erreur suivant (dump MongoDB 3.2) (restauration de MongoDB 3.4):

Failed: ngivr-dev.ledgerhelpers: error creating indexes for ngivr-dev.ledgerhelpers: **createIndex error:** **The field 'safe' is not valid for an index specification.** Specification: **{ unique: true, name: "ledgerId_1", safe: null, ns: "ngivr-dev.ledgerhelpers", background: true, key: { ledgerId: 1 } }**

On dirait que l'index sécurisé est nul. Mais comment puis-je l'utiliser avec MongoDB 3.4? 3.2 est ok.

22
Patrik Laszlo

safe=true n'est pas une spécification d'index. 

Dans les versions précédentes de MongoDB, inférieures à 3.4, des spécifications d'index supplémentaires peuvent être ajoutées. Ceux-ci ont été utilisés par des pilotes spécifiques.

En 3.4, mongodb a ajouté une validation sur la spécification des index:

S'assurer que les options d'index spécifiées sont valides. Précédent les versions ignoraient les options invalides.

C’est pourquoi vous avez cette erreur… .. Je crains que vous ne deviez vous assurer que l’index de votre version 3.2 n’a pas de spécification d’index invalide, et ensuite le mongodump.

Comme kz_sergey le dit dans sa réponse, vous pouvez utiliser mongorestore avec --noIndexRestore , cela devrait fonctionner correctement.

49
sergiuz

Pourquoi restaurez-vous les index? --noIndexRestore et les créer à nouveau. 

21
kz_sergey
find . -type f -name "*.metadata.json" -exec sed -i 's/,"safe":null//g' {} \;
0
user9202717