Ошибка 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 имя недопустимо
Прервано
Я успешно выполнил эту операцию раньше, и это странное поведение никогда не происходило. Что мне нужно сделать, чтобы исправить это?
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