MongoDB mongorestore failure: locale::facet::_S_create_c_locale name not valid

78,201

Solution 1

Actually it isn't strictly related to MongoDB. Somehow the language on computer B was not defined correctly. I managed to fix it by typing:

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

These commands will generate and configure the needed locales. After those steps mongorestore got back working as usual.

Solution 2

On my distro "locale-gen" was not installed and it turned out all I had to do is set the LC_ALL environment variable. so the following command fixed it:

export LC_ALL="en_US.UTF-8"

hopefully it will help someone else...

Solution 3

Exporting LC_ALL="en_US.UTF-8" only works if you have the en_US locale installed. If you want to avoid installing the locales package (or its equivalent on distributions other than Debian derivatives), then you can instead use:

export LC_ALL=C.UTF-8

which will not require any extra locale data.

Solution 4

To make the fix permanent you can edit one of those files:

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

And add the line LC_ALL="en_US.UTF-8"

Solution 5

If you are using a Mac OSX and SSH this might be issued by wrong 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=

Unset the wrong var.

$ unset LC_CTYPE 

Check whether locale is working fine.

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

Now mongo also should do fine.

Share:
78,201

Related videos on Youtube

Luca Anceschi
Author by

Luca Anceschi

Updated on October 03, 2020

Comments

  • Luca Anceschi
    Luca Anceschi over 3 years

    I created a dump with mongodump on computer A (ubuntu 12.04 server). I moved it to computer B (ubuntu 12.04 server) and typed:

    mongorestore -db db_name --drop db_dump_path

    It failed and it reported:

    connected to: 127.0.0.1
    terminate called after throwing an instance of 'std::runtime_error'
    what(): locale::facet::_S_create_c_locale name not valid
    Aborted

    I've successfully accomplished this operation before and this strange behavior has never occurred. What do I need to do to fix this?

  • Marian Theisen
    Marian Theisen over 10 years
    this basically helped me. but also had to edit /etc/locale.gen and enable the needed locales (on arch linux)
  • Amos Shapira
    Amos Shapira about 10 years
    This solved the problem for me too. This is on Lubuntu 12.04 x86.
  • Beast
    Beast almost 10 years
    But why is this happening, is there any specific reasons that mongodump / restore depends on locale languages ?
  • Sebastien Lorber
    Sebastien Lorber almost 9 years
    This works fine in a terminal session, but if you look for a permanent solution you'd rather check stackoverflow.com/a/32762296/82609
  • keisar
    keisar almost 9 years
    Thanks @SebastienLorber, in my case I added this line to my ~/.profile or ~/.bashrc and it worked permanently
  • erb
    erb over 8 years
    @MarianTheisen That was the culprit for me as well, I'm on a fresh Arch install and got the error while trying to run rescuetime. Fixing /etc/locale.gen and running locale-gen was all that was required.
  • Hoang Le
    Hoang Le over 8 years
    Works like a charm. Very native and fast.
  • KayV
    KayV over 7 years
    @user1219736 You saved my day :P
  • dzuremar
    dzuremar over 6 years
    Hmmm, came here just prior to reading that setting LC_ALL is strongly discouraged: wiki.debian.org/Locale
  • dzuremar
    dzuremar over 6 years
    Damn, but this LC_ALL setting solved the problem right and there, instantly and without requiring root privileges. Nevermind, hopefully there won't be any darkness bugs haunting me later.
  • Sergiu
    Sergiu over 5 years
    this worked for me (centos, AWS c4.8xlarge, helped with vivado starting fix)