J'ai créé un dump avec mongodump sur l'ordinateur A (serveur Ubuntu 12.04). Je l'ai déplacé vers l'ordinateur B (serveur Ubuntu 12.04) et j'ai tapé:
mongorestore -db nom_base --drop chemin_base_db
Cela a échoué et il a rapporté:
connecté à: 127.0.0.1
se termine après avoir lancé une instance de 'std :: runtime_error'
what (): locale :: facet :: _ S_create_c_locale nom non valide
Avorté
J'ai déjà réussi cette opération auparavant et ce comportement étrange ne s'est jamais produit. Que dois-je faire pour résoudre ce problème?
En réalité, il n’est pas strictement lié à MongoDB. D'une manière ou d'une autre, la langue sur l'ordinateur B n'a pas été définie correctement. J'ai réussi à le réparer en tapant:
Sudo locale-gen en_US en_US.UTF-8
Sudo locale-gen it_IT it_IT.UTF-8
Sudo locale-gen xx_xx xx_XX.UTF-8 ...
Sudo dpkg-reconfigure locales
Ces commandes vont générer et configurer les paramètres régionaux nécessaires. Après ces étapes, mongorestore a repris son travail habituel.
Sur ma distribution, "locale-gen" n'était pas installé et il ne me restait plus qu'à définir la variable d'environnement LC_ALL. donc la commande suivante l'a corrigé:
export LC_ALL="en_US.UTF-8"
j'espère que cela aidera quelqu'un d'autre ...
Exporter LC_ALL="en_US.UTF-8"
ne fonctionne que si vous avez le en_US
locale installée. Si vous voulez éviter d'installer le paquet locales
(ou son équivalent sur des distributions autres que les dérivés de Debian), vous pouvez utiliser à la place:
export LC_ALL=C.UTF-8
qui ne nécessitera aucune donnée de localisation supplémentaire.
Si vous utilisez Mac OSX et SSH, cela peut être généré par une erreur de LC_CTYPE.
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Désélectionner le mauvais var.
$ unset LC_CTYPE
Vérifiez si les paramètres régionaux fonctionnent correctement.
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Maintenant, le mongo devrait également faire l'affaire.
Pour rendre le correctif permanent, vous pouvez éditer l’un de ces fichiers:
Et ajoutez la ligne LC_ALL="en_US.UTF-8"
Vous avez le même problème sur debian 7 sans que locale-gen (commande introuvable) soit installée.
J'ai résolu de cette façon:
su
apt-get install locales
dpkg-reconfigure locales # select locales you want!
Maintenant, mongodb devrait commencer.