Ошибка MongoDB mongorestore: locale:: facet:: s создать имя локали c недопустимо



Я создал дамп с mongodump на компьютере A (ubuntu 12.04 server). Я переместил его на компьютер B (ubuntu 12.04 server) и набрал:




mongorestore-db db_name --drop db_dump_path




Это не удалось, и он сообщил:




подключен к: 127.0.0.1

terminate вызывается после создания экземпляра 'std:: runtime_error'

что (): locale:: facet:: _S_create_c_locale имя недопустимо

Прервано




Я успешно выполнил эту операцию раньше, и это странное поведение никогда не происходило. Что мне нужно сделать, чтобы исправить это?

626   6  

6 ответов:

на моем дистрибутиве "locale-gen" не был установлен, и оказалось, что все, что мне нужно было сделать, это установить переменную среды LC_ALL. поэтому следующая команда исправила это:

export LC_ALL="en_US.UTF-8"

надеюсь, это поможет кто-то другой...

на самом деле это не совсем связано с MongoDB. Каким-то образом язык на компьютере B не был определен правильно. Мне удалось это исправить, набрав:

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-перенастройка локалей

эти команды будут генерировать и настраивать необходимые локали. После этих шагов mongorestore вернулся к работе в качестве обычный.

экспорт LC_ALL="en_US.UTF-8" работает только если у вас есть en_US локаль установлена. Если вы хотите избежать установки locales пакет (или его эквивалент в дистрибутивах, отличных от производных Debian), то вы можете вместо этого использовать:

export LC_ALL=C.UTF-8

, который не потребует каких-либо дополнительных данных локали.

получил ту же проблему на debian 7 без locale-gen (команда не найдена) установлен.

Я решил так:

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

теперь mongodb должен начать.

источник

Если вы используете Mac OSX и SSH, это может быть выдано неправильным 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=

снимите неправильный var.

$ unset LC_CTYPE 

проверьте, работает ли locale нормально.

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

Теперь монго тоже должен быть в порядке.

чтобы сделать исправление постоянным, вы можете отредактировать один из этих файлов:

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

и добавить строку LC_ALL="en_US.UTF-8"

Comments

    Ничего не найдено.