コンピューター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
中止
私は以前にこの操作を成功させましたが、この奇妙な動作は一度も発生していません。これを修正するには何をする必要がありますか?
実際には、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は通常どおり動作するようになりました。
私のディストリビューションでは、「locale-gen」がインストールされていなかったため、LC_ALL環境変数を設定するだけで済みました。そのため、次のコマンドで修正しました。
export LC_ALL="en_US.UTF-8"
うまくいけば、それは他の誰かを助けるでしょう...
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=
間違った変数の設定を解除します。
$ 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もうまくいくはずです。
修正を永続的にするには、これらのファイルのいずれかを編集できます。
行LC_ALL="en_US.UTF-8"
を追加します
Locale-gen(コマンドが見つかりません)がインストールされていないdebian 7でも同じ問題が発生しました。
私はこのように解決しました:
su
apt-get install locales
dpkg-reconfigure locales # select locales you want!
これでmongodbが起動します。