2013-09-30 7 views
96

Ich habe einen Dump mit mongodump auf Computer A (Ubuntu 12.04 Server) erstellt. Ich zog es an den Computer B (ubuntu 12.04 Server) und tippte:MongoDB mongorestore fehlgeschlagen: locale :: facet :: _ S_create_c_locale Name nicht gültig

mongorestore -db db_name --drop db_dump_path

Er scheiterte und es berichtet:

verbunden mit: 127,0 .0.1
Abschluss wird aufgerufen, nachdem eine Instanz von 'std :: runtime_error' geworfen wurde
what(): locale :: facet :: _ S_create_c_locale Name nicht gültig
Aborted

Ich habe diese Operation erfolgreich durchgeführt und dieses seltsame Verhalten ist nie aufgetreten.

Jede Hilfe wird geschätzt. Vielen Dank.

Antwort

45

Eigentlich ist es nicht eng mit MongoDB verbunden. Irgendwie wurde die Sprache auf Computer B nicht korrekt definiert. Ich schaffte es durch die Eingabe zu beheben:

sudo locale-gen en_US en_US.UTF-8
sudo locale-gen it_IT it_IT.UTF-8
sudo locale-gen xx_XX.UTF-8 xx_XX .. .
sudo dpkg-recon locales

die benötigten locales erzeugen und konfigurieren Diese Befehle. Nach diesen Schritten hat mongorestore wieder wie gewohnt funktioniert.

+2

das half mir grundsätzlich. musste aber auch '/ etc/locale.gen' editieren und die benötigten locales aktivieren (auf arch linux) –

+0

Das löste das Problem auch für mich. Dies ist auf Lubuntu 12.04 x86. –

+1

Aber warum passiert das, gibt es bestimmte Gründe dafür, dass mongodump/restore von Gebietsschema-Sprachen abhängt? – Beast

238

Auf meiner Distro war "locale-gen" nicht installiert und es stellte sich heraus, dass ich nur die Umgebungsvariable LC_ALL setzen musste. so der folgende Befehl es fest:

export LC_ALL="en_US.UTF-8" 

hoffentlich hilft es jemand anderes ...

+2

Dies funktioniert gut in einer Terminal-Sitzung, aber wenn Sie nach einer dauerhaften Lösung suchen, überprüfen Sie lieber http://StackOverflow.com/a/32762296/82609 –

+4

Danke @SebastienLorber, in meinem Fall habe ich diese Zeile zu meinem ~ hinzugefügt /.profile oder ~/.bashrc und es funktionierte dauerhaft – keisar

+0

das half auch mit mysql workbench 6.3 – Peter

7

Got gleiches Problem auf debian 7 ohne locale-gen (Befehl nicht gefunden) installiert.

Ich löste diese Weise:

su 
apt-get install locales 
dpkg-reconfigure locales # select locales you want! 

Jetzt sollte mongodb starten.

Source

8

Wenn Sie dies einen Mac OSX und SSH verwenden könnte durch falsche LC_CTYPE ausgegeben werden.

$ 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= 

Die falsche var.

$ unset LC_CTYPE 

Überprüfen Sie, ob das Gebietsschema einwandfrei funktioniert.

$ 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= 

Jetzt Mongo sollte auch gut tun.

+0

Funktioniert wie ein Charme. Sehr nativ und schnell. –

+0

@ user1219736 Sie haben meinen Tag gerettet: P – KayV

8

Um das Update dauerhaft machen Sie eine dieser Dateien bearbeiten können:

  • sudo vim/etc/default/locale
  • sudo vim/etc/environment

und fügen Sie die Zeile LC_ALL="en_US.UTF-8"

13

Das Exportieren von LC_ALL="en_US.UTF-8" funktioniert nur, wenn Sie das Gebietsschema installiert haben. Wenn Sie das locales Paket (oder dessen Äquivalent auf Ausschüttungen andere als Debian-Derivate) Installation vermeiden möchten, dann können Sie stattdessen verwenden:

export LC_ALL=C.UTF-8 

, die erfordern keine zusätzlichen locale Daten.

+1

perfekt, nur das funktioniert für mich. – Offboard

Verwandte Themen