web-dev-qa-db-ja.com

MongoDB mongorestoreエラー:locale :: facet :: _ S_create_c_locale name not valid

コンピューター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 not valid
中止

私は以前にこの操作を成功させましたが、この奇妙な動作は一度も発生していません。これを修正するには何をする必要がありますか?

101
Luca Anceschi

実際には、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は通常どおり動作するようになりました。

51
Luca Anceschi

私のディストリビューションでは、「locale-gen」がインストールされていなかったため、LC_ALL環境変数を設定するだけで済みました。そのため、次のコマンドで修正しました。

export LC_ALL="en_US.UTF-8"

うまくいけば、それは他の誰かを助けるでしょう...

254
keisar

LC_ALL="en_US.UTF-8"のエクスポートは、en_USロケールがインストールされている場合にのみ機能します。 localesパッケージ(またはDebian派生物以外のディストリビューションに相当するもの)のインストールを避けたい場合は、代わりに以下を使用できます。

export LC_ALL=C.UTF-8

追加のロケールデータは必要ありません。

15
josch

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=

間違った変数の設定を解除します。

$ 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もうまくいくはずです。

10
user1219736

修正を永続的にするには、これらのファイルのいずれかを編集できます。

  • Sudo vim/etc/default/locale
  • Sudo vim/etc/environment

LC_ALL="en_US.UTF-8"を追加します

10

Locale-gen(コマンドが見つかりません)がインストールされていないdebian 7でも同じ問題が発生しました。

私はこのように解決しました:

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

これでmongodbが起動します。

ソース

9