it-swarm.com.de

MongoDB-Dump von 3.2, Restore mit 3.4, Fehlerindex safe = null

Ich erhalte folgende Fehlermeldung (dump MongoDB 3.2) (MongoDB 3.4 wiederherstellen):

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 } }**

Sieht aus wie der sichere Index ist null. Aber wie kann ich es mit MongoDB 3.4 verwenden? 3.2 ist in Ordnung.

22
Patrik Laszlo

safe=true ist keine Indexspezifikation. 

In früheren MongoDB-Versionen unter 3.4 können zusätzliche Indexspezifikationen hinzugefügt werden. Diese wurden von bestimmten Fahrern verwendet.

In 3.4 fügte mongodb eine Validierung für die Indexspezifikation hinzu:

Sicherstellen, dass die angegebenen Indexoptionen gültig sind. Bisherige Versionen ignorierten ungültige Optionen.

Aus diesem Grund haben Sie diesen Fehler ... Ich denke, Sie müssen sicherstellen, dass der Index in Ihrer Version 3.2 keine ungültigen Indexspezifikationen hat, und anschließend den Mongodump.

Wie kz_sergey in seiner Antwort sagt, können Sie mongorestore mit --noIndexRestore verwenden, das sollte gut funktionieren.

49
sergiuz

Warum stellen Sie Indizes wieder her? --noIndexRestore und erstellt sie erneut. 

21
kz_sergey

Im Geiste von Aymerics Kommentar können Sie diesen awk-Einzeiler verwenden, um die "sichere" Eigenschaft in Ihren .metadata.json-Dateien zu ersetzen.

awk -i inplace '{gsub(",\"safe\":null", ""); print}' *.metadata.json

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