MongoDB mongorestoreの失敗:locale :: facet :: _ S_create_c_localeの名前が無効です


102

コンピューターA(ubuntu 12.04サーバー)でmongodumpを使用してダンプを作成しました。コンピューターB(ubuntu 12.04サーバー)に移動して、次のように入力しました。

mongorestore -db db_name --drop db_dump_path

失敗し、次のように報告されました。

接続先:
'std :: runtime_error'のインスタンスをスローした後に127.0.0.1 terminateが呼び出されました
what():locale :: facet :: _ S_create_c_locale name not valid
Aborted

私は以前この操作を成功させており、この奇妙な動作は発生していません。これを修正するにはどうすればよいですか?

回答:


256

私のディストリビューションでは "locale-gen"がインストールされておらず、LC_ALL環境変数を設定するだけで済みました。次のコマンドで修正しました:

export LC_ALL="en_US.UTF-8"

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


3
これは、ターミナルセッションで罰金を動作しますが、あなたは恒久的な解決策を探している場合、あなたはかなりチェックしたいstackoverflow.com/a/32762296/82609
セバスチャン・ローバー

5
@SebastienLorberに感謝します。私の場合、この行を〜/ .profileまたは〜/ .bashrcに追加し、永続的に機能しました
keisar '24

うーん、LC_ALLの設定を強くお勧めしないことを読む直前にここに来ました:wiki.debian.org/Locale
dzuremar

くそー、しかしこのLC_ALL設定は問題を即座にそしてルート権限を必要とせずにすぐに解決しました。気にしないでください、うまくいけば、後で私を悩ませている暗闇のバグがなくなるでしょう。
dzuremar

52

実際、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は通常どおり動作します。


2
これは基本的に私を助けました。しかし/etc/locale.gen、必要なロケールを編集して有効にする必要もありました(arch linux上)
Marian Theisen 14年

これは私にとっても問題を解決しました。これはLubuntu 12.04 x86にあります。
Amos Shapira 14

1
しかし、なぜこれが起こっているのですか?mongodump / restoreがロケール言語に依存する特定の理由はありますか?
ビースト、

@MarianTheisenそれも私にとって犯人でした、私はArchの新規インストール中に、rescuetimeを実行しようとしたときにエラーが発生しました。修正/etc/locale.genして実行locale-genするだけで済みました。
erb '15年

17

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

export LC_ALL=C.UTF-8

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


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=

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

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

今モンゴもうまくいくはずです。


魅力のように機能します。非常にネイティブで高速です。
Hoang Le

@ user1219736あなたは私の日を保存しました:P
KayV 2016

10

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

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

そして、行を追加します LC_ALL="en_US.UTF-8"


これは私のために働きました(centos、AWS c4.8xlarge、vivado開始修正の支援)
Sergiu

9

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

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

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

これでmongodbが起動します。

ソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.