MongoDB mongorestore失败:locale :: facet :: _ S_create_c_locale名称无效

Luc*_*chi 101 locale mongodb mongorestore mongodump ubuntu-12.04

我在计算机A(ubuntu 12.04服务器)上使用mongodump创建了一个转储.我将它移动到计算机B(ubuntu 12.04服务器)并输入:

mongorestore -db db_name --drop db_dump_path

它失败了,它报告说:

连接到:127.0.0.1
终止在抛出'std :: runtime_error'的实例后调用
what():locale :: facet :: _ S_create_c_locale name无效
Aborted

我以前成功地完成了这个操作,这种奇怪的行为从未发生过.我需要做些什么来解决这个问题?

kei*_*sar 255

在我的发行版"locale-gen"没有安装,事实证明我所要做的就是设置LC_ALL环境变量.所以以下命令修复它:

export LC_ALL="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)

希望它会帮助别人......

  • 谢谢@SebastienLorber,在我的情况下,我将这行添加到我的〜/ .profile或〜/ .bashrc中,它永久地工作 (5认同)
  • 这在终端会话中工作正常,但如果您寻找永久解决方案,您宁愿查看http://stackoverflow.com/a/32762296/82609 (3认同)

Luc*_*chi 51

实际上它与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-reconfigure locales

这些命令将生成并配置所需的语言环境.在那些步骤之后,mongorestore像往常一样恢复工作.

  • 这基本上对我有帮助.但也必须编辑`/ etc/locale.gen`并启用所需的语言环境(在arch linux上) (2认同)

jos*_*sch 15

导出LC_ALL="en_US.UTF-8"仅在en_US安装了区域设置时才有效.如果你想避免安装locales包(或其在Debian衍生产品以外的发行版上的等价物),那么你可以改为使用:

export LC_ALL=C.UTF-8
Run Code Online (Sandbox Code Playgroud)

这不需要任何额外的区域设置数据.


Ale*_*lex 10

如果您使用的是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=
Run Code Online (Sandbox Code Playgroud)

取消设置错误的var.

$ unset LC_CTYPE 
Run Code Online (Sandbox Code Playgroud)

检查区域设置是否正常工作.

$ 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=
Run Code Online (Sandbox Code Playgroud)

现在mongo也应该做得很好.


Seb*_*ber 10

要使修复永久化,您可以编辑其中一个文件:

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

并添加该行 LC_ALL="en_US.UTF-8"


Dan*_*ara 9

在没有安装locale-gen(命令未找到)的debian 7上遇到同样的问题.

我这样解决了:

su
apt-get install locales
dpkg-reconfigure locales # select locales you want!
Run Code Online (Sandbox Code Playgroud)

现在mongodb应该开始了.

资源