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

실패했고 다음과 같이보고했습니다.

연결 대상 : 127.0.0.1
종료 'std :: runtime_error'인스턴스를 던진 후 호출 됨
what () : locale :: facet :: _ S_create_c_locale 이름이 유효하지 않음
중단됨

나는 이전에이 작업을 성공적으로 수행했으며이 이상한 동작은 발생하지 않았습니다. 이 문제를 해결하려면 어떻게해야합니까?

답변:


256

내 배포판에서 "locale-gen"이 설치되지 않았고 LC_ALL 환경 변수를 설정하기 만하면됩니다. 그래서 다음 명령으로 수정했습니다.

export LC_ALL="en_US.UTF-8"

다른 사람에게 도움이되기를 바랍니다.


3
이 터미널 세션에서 잘 작동하지만 영구적 인 해결책을 보면 당신은 오히려 낫겠 stackoverflow.com/a/32762296/82609
세바스티앙 Lorber

5
덕분에 @SebastienLorber, 내 경우에는 내가이 라인을 추가 내 ~ / .profile에 또는 ~ / .bashrc에와 영구적 일
keisar

흠, 그 설정 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과 (아치 리눅스에) 필요한 로케일 가능
마리아 Theisen은에게

이것은 나에게도 문제를 해결했습니다. 이것은 Lubuntu 12.04 x86에 있습니다.
아모스 Shapira

1
그러나 왜 이런 일이 발생합니까? mongodump / restore가 로케일 언어에 의존하는 특별한 이유가 있습니까?
Beast

@MarianTheisen 그것은 저에게도 범인이었습니다. 저는 새로운 Arch를 설치하고 구조 시간을 실행하는 동안 오류가 발생했습니다. 수정 /etc/locale.gen과 실행 locale-gen이 필요한 전부였습니다.
erb

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

P : @ user1219736 당신은 내 일 저장
KayV을

10

영구적으로 수정하려면 다음 파일 중 하나를 편집 할 수 있습니다.

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

그리고 줄을 추가하십시오 LC_ALL="en_US.UTF-8"


이 날 (vivado 시작 수정과 도움에 CentOS, AWS의 c4.8xlarge) 근무
세르주

9

locale-gen (명령을 찾을 수 없음)이 설치되지 않은 데비안 7에서도 동일한 문제가 발생했습니다.

이 방법으로 해결했습니다.

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

이제 mongodb가 시작됩니다.

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.