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

我在计算机A(Ubuntu 12.04服务器)上创build了一个包含mongodump的转储文件。 我把它移到电脑B(Ubuntu的12.04服务器),并input:

mongorestore -db db_name – drop db_dump_path

它失败了,它报告说:

连接到:127.0.0.1
在抛出“std :: runtime_error”的实例后终止调用
what():locale :: facet :: _ S_create_c_locale名称无效
中止

我已经成功地完成了这个操作,而这种奇怪的行为从未发生过。

任何帮助赞赏。 谢谢。

在我的发行版“locale-gen”没有安装,结果我所要做的就是设置LC_ALL环境variables。 所以下面的命令修复了它:

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-reconfigure语言环境

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

导出LC_ALL="en_US.UTF-8"仅适用于安装了en_US语言环境的情况。 如果您想避免安装locales软件包(或Debian衍生产品以外的其他发行版本),那么您可以使用:

 export LC_ALL=C.UTF-8 

这将不需要任何额外的语言环境数据。

如果您使用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= 

取消设置错误的variables

 $ unset LC_CTYPE 

检查语言环境是否正常工作。

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

现在mongo也应该罚款。

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

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

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

在没有安装locale-gen(命令未find)的情况下,在debian 7上得到了同样的问题。

我解决了这个问题:

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

现在mongodb应该开始。

资源