2012-03-31 4 views
30

로컬 컴퓨터에 Windows 서비스로 설치 한 Mongo DB에 연결할 수 없습니다. 또한 MongoDB와 통신하는 작은 WPF 응용 프로그램을 만들었습니다. 의 ErrorMessage :mongodb를 어떻게 수리하나요?

오류 : 서버 127.0.0.1 쉘/mongo.js에 연결할 수 없습니다 : 8 예외 : 감지 불결한 종료를 실패 연결합니다.

+1

: "로컬 DB"로 WPF 응용 프로그램과 MongoDB를하고 나는이 문제로 인해 MongoDB를이 있지만 매우를 들어, 응용 프로그램의 종류에 적합하지 않은 것으로 결론 신뢰할 수있는 서버 측 플랫폼. 그렇지 않으면이 문제로 자주 방문하게됩니다. LiteDb 또는 Mini-Biggy 같은 대안을 사용하는 것이 좋습니다. –

답변

89

--repair 플래그로 실행해야합니다.

mongod --repair 

복구가 끝난 후이 작업을 중지하고 정상적으로 실행하십시오. Documentation on --repair option.

+1

설명서를 읽으면서 그것을 알아 냈습니다. – marko

+37

읽기가 좋다 :) –

+1

복구가 실패하고 mongod가 손상된 데이터 파일에 대한 예외로 응답하면 손상된 mongo 데이터 파일과 함께 mongd.lock 파일을 제거하고 mongod --repair를 다시 실행하십시오. 분명히이 방법으로 데이터를 잃어 버릴 수 있지만 적어도 mongod를 다시 시작할 수는 있습니다. – chromaloop

11

신속한 : 당신이 루트 사용자로 복구 작업이, 이후 모든 DB 파일이 MongoDB를 사용자가 소유되어 있는지 확인 할 경우

sudo rm /data/db/mongod.lock 
sudo mongod --dbpath /data/db --repair 
sudo mongod --dbpath /data/db 
+0

덕분에 도움이되었습니다. – Saani

+1

감사! --repair 플래그와 함께 --dbpath 옵션을 사용하면 효과가있었습니다. 나는 "부정한 셧다운"(그게 무슨 뜻인지)에 대해서도 똑같은 문제가 있었는데 수리를 시도했을 때 디폴트 "\ data \ db"디렉토리를 찾을 수 없다는 오류가 나타났습니다. 이것은 로그와 데이터를 저장하기 위해 별도의 위치를 ​​사용하고 있기 때문에 예상되었습니다. 방금 커스텀 위치에 --dbpath를 설정하고 작업했습니다. 확인하지는 못했지만, 내 생각에 --config "mongodb \ mongod.cfg"와 --repair 플래그를 사용하여 MongoDB가 내 사용자 정의 설정을 사용할 수 있습니다. 이상하게도 그 파일에서 수리를 읽지 못했습니다. –

+0

작동합니다 .. 감사합니다. +1 –

9

그렇지 않으면 MongoDB를 시작할 수 없습니다

chown -R mongodb:mongodb /data/db 
rm /data/db/mongod.lock 
/etc/init.d/mongodb start 
2
$ mongo 
> use dbname 
> db.repairDatabase() 

참고 - repairDatabase 명령에 db.repairDatabase() 도우미가있는 --repair 기능도 쉘에서 사용할 수 있습니다.

http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ 참조 :

나는 같은 응용 프로그램 아키텍처했다
+0

첫 번째 줄은 스크립트 예제를위한 것입니까? 그런 다음 4 개의 공백을 추가하여 형식이 아닌 코드로 나열하십시오. – Artemix