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应该开始。
资源