MongoDB mongorestore hatası: locale :: facet :: _ S_create_c_locale adı geçerli değil


102

A bilgisayarında mongodump ile bir döküm oluşturdum (ubuntu 12.04 sunucusu). B bilgisayarına (ubuntu 12.04 sunucusu) taşıdım ve yazdım:

mongorestore -db db_name --drop db_dump_path

Başarısız oldu ve şunu bildirdi:

bağlı: 127.0.0.1
'std :: runtime_error' örneğini atma sonra denen olarak fesih
Ne (): yerel :: faset :: _ S_create_c_locale adı geçerli değil
Kesildi

Bu işlemi daha önce başarıyla gerçekleştirdim ve bu garip davranış hiç gerçekleşmedi. Bunu düzeltmek için ne yapmam gerekiyor?

Yanıtlar:


256

Dağıtımımda "locale-gen" kurulu değildi ve tek yapmam gereken LC_ALL ortam değişkenini ayarlamak olduğu ortaya çıktı. bu yüzden aşağıdaki komut sorunu çözdü:

export LC_ALL="en_US.UTF-8"

umarım başka birine yardımcı olur ...


3
Bu, bir terminal oturumunda iyi çalışıyor, ancak kalıcı bir çözüm arıyorsanız stackoverflow.com/a/32762296/82609
Sebastien Lorber

5
Teşekkürler @SebastienLorber, benim durumumda bu satırı ~ / .profile veya ~ / .bashrc
dosyama ekledim

Hmmm, LC_ALL ayarının kesinlikle tavsiye edilmediğini
dzuremar

Lanet olsun, ancak bu LC_ALL ayarı, sorunu anında ve kök ayrıcalıkları gerektirmeden hemen ve orada çözdü. Boşver, umarım daha sonra beni rahatsız eden karanlık böcek olmaz.
dzuremar

52

Aslında MongoDB ile tam bir ilgisi yok. Bir şekilde B bilgisayarındaki dil doğru tanımlanmamıştı. Yazarak düzeltmeyi başardım:

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

Bu komutlar, gerekli yerel ayarları oluşturacak ve yapılandıracaktır. Bu adımlardan sonra mongorestore her zamanki gibi çalışmaya başladı.


2
bu temelde bana yardımcı oldu. aynı zamanda /etc/locale.gengerekli yerel ayarları (arch linux üzerinde) düzenlemek ve etkinleştirmek zorundaydı
Marian Theisen

Bu benim için de sorunu çözdü. Bu Lubuntu 12.04 x86'da.
Amos Shapira

1
Ama bu neden oluyor, mongodump / restore'nin yerel dillere bağlı olmasının belirli nedenleri var mı?
Beast

@MarianTheisen Bu benim için de suçluydu, yeni bir Arch kurulumundayım ve kurtarma süresini çalıştırmaya çalışırken hatayı aldım. Tamir etmek /etc/locale.genve çalıştırmak locale-gengerekli olan tek şeydi.
erb

17

Dışa aktarma LC_ALL="en_US.UTF-8"yalnızca en_USyerel ayarı yüklediyseniz çalışır. localesPaketi (veya eşdeğerini Debian türevleri dışındaki dağıtımlarda) kurmaktan kaçınmak istiyorsanız, bunun yerine şunu kullanabilirsiniz:

export LC_ALL=C.UTF-8

ekstra yerel veri gerektirmez.


10

Mac OSX ve SSH kullanıyorsanız, bu yanlış LC_CTYPE tarafından verilebilir.

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

Yanlış var.

$ unset LC_CTYPE 

Yerel ayarın iyi çalışıp çalışmadığını kontrol edin.

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

Şimdi mongo da iyi yapmalı.


Tıkır tıkır çalışıyor. Çok yerli ve hızlı.
Hoang Le

@ user1219736 Günümü kurtardın: P
KayV

10

Düzeltmeyi kalıcı hale getirmek için bu dosyalardan birini düzenleyebilirsiniz:

  • sudo vim / etc / varsayılan / locale
  • sudo vim / etc / çevre

Ve çizgiyi ekle LC_ALL="en_US.UTF-8"


bu benim için çalıştı (centos, AWS c4.8xlarge, vivado başlangıç ​​düzeltmesine yardımcı oldu)
Sergiu

9

Locale-gen (komut bulunamadı) kurulu olmadan debian 7'de aynı sorunu yaşadım.

Bu şekilde çözdüm:

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

Şimdi mongodb başlamalı.

Kaynak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.