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

后端 未结 6 1117
清歌不尽
清歌不尽 2020-12-07 08:11

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_nam

相关标签:
6条回答
  • 2020-12-07 08:46

    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.

    0 讨论(0)
  • 2020-12-07 08:46

    Got same problem on debian 7 without locale-gen (command not found) installed.

    I solved this way:

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

    Now mongodb should start.

    Source

    0 讨论(0)
  • 2020-12-07 08:49

    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"

    0 讨论(0)
  • 2020-12-07 08:53

    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.

    0 讨论(0)
  • 2020-12-07 08:55

    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.

    0 讨论(0)
  • 2020-12-07 09:01

    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...

    0 讨论(0)
提交回复
热议问题