2013-04-02 12 views
7

Il mio database Mongo ha pochi indici con un nome personalizzato, perché ci sono troppi campi in essi per generare automaticamente un nome senza errori con errore "ns name too long".Mongorestore: il nome ns è troppo lungo, la dimensione massima è 128

Quando provo a ripristinare questo database da un backup utilizzando mongorestore, non riesce con questo stesso errore ("nome ns troppo lungo, dimensione massima 128"). Sembra che mongorestore cerchi di generare nomi di indici basati sul loro contenuto piuttosto che semplicemente ripristinare qualunque nome sia effettivamente usato in un database.

L'unica soluzione che ho trovato finora è utilizzare mongorestore con --noIndexRestore e ricreare manualmente tutti gli indici dopo, ma questo è chiaramente un modo terribile. C'è un modo migliore per risolvere questo?

Ho riscontrato questo problema con MongoDB 2.4.1.

Grazie.

+0

Hai considerato la possibilità di presentare un ticket su questo problema sul Bugtracker MongoDB? Dalla descrizione nella documentazione (http://docs.mongodb.org/manual/reference/mongorestore/) considererei questo un bug. Se si crea un dump con mongodump, mi aspetterei che mongorestore dovrebbe essere in grado di ripristinare nuovamente lo stato esatto. – philnate

+0

Lo faremo, grazie! – freetonik

+2

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

risposta

1

mongorestore utilizza lo stesso nome durante la ricreazione di un indice che esisteva durante il dump. Puoi vedere quali erano questi nomi nel file .metadata.json in 2.2 e versioni successive, prima di 2.2 i nomi erano nel file .system.indexes.bson (è in BSON, quindi puoi esaminarlo usando il comando bsondump).

Un modo in cui ho trovato che è possibile ottenere questo errore è se si sta eseguendo il ripristino in un database o una raccolta con un nome diverso e il nuovo nome è più lungo di quello originale. Se si utilizzano nomi di database e nomi di raccolte originali, verrà utilizzato il nome dell'indice originale (personalizzato o predefinito) e sarà quindi un nome legale.

Problemi correlati