2012-03-31 37 views
30

Tôi dường như không thể kết nối với Mongo DB, mà tôi đã cài đặt như một Dịch vụ Windows trên máy cục bộ của mình. Tôi cũng đã xây dựng một ứng dụng WPF nhỏ giao tiếp với MongoDB. Các errormessage:Làm thế nào để sửa chữa mongodb của tôi?

Lỗi: Không thể kết nối với máy chủ 127.0.0.1 vỏ/mongo.js: 8 ngoại lệ: kết nối thất bại tắt máy không sạch phát hiện.

+1

Tôi đã làm kiến ​​trúc cùng một ứng dụng: Ứng dụng WPF và MongoDB như là một "db địa phương" và tôi kết luận rằng vì vấn đề này MongoDB là không phù hợp cho các loại hình ứng dụng, nhưng chỉ dành cho cao nền tảng máy chủ đáng tin cậy. Khác bạn sẽ thường xuyên được truy cập bởi vấn đề này. Tốt hơn là nên thay thế như LiteDb hoặc Mini-Biggy. –

Trả lời

89

Bạn nên khởi chạy thẻ có cờ --repair.

mongod --repair 

Sau khi sửa xong, hãy dừng cái này và khởi chạy bình thường. Documentation on --repair option.

+1

Tôi đã tìm ra, bằng cách đọc sách hướng dẫn. – marko

+37

Đọc là tốt :) –

+1

Nếu sửa chữa không thành công và mongod phản hồi với ngoại lệ trên tệp dữ liệu bị hỏng, hãy xóa tệp mongd.lock cùng với tệp dữ liệu mongo bị hỏng và chạy lại mongod --repair. Bạn rõ ràng sẽ mất dữ liệu với cách tiếp cận này, nhưng ít nhất bạn sẽ có thể bắt đầu mongod một lần nữa. – chromaloop

11

Quicker:

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

nó đã giúp, cảm ơn! – Saani

+1

Cảm ơn! Sử dụng tùy chọn --dbpath với cờ --repair làm việc cho tôi. Tôi đã có cùng một vấn đề với "tắt máy ô uế" (bất cứ điều gì có nghĩa là), và khi tôi cố gắng sửa chữa, tôi nhận được một lỗi nói rằng thư mục "\ data \ db" mặc định không được tìm thấy. Điều này được mong đợi khi tôi đang sử dụng một vị trí riêng biệt để lưu trữ nhật ký và dữ liệu của mình. Tôi chỉ cần đặt --dbpath đến vị trí tùy chỉnh của tôi và làm việc. Tôi đã không xác nhận, nhưng tôi đoán là tôi có thể sử dụng --config "mongodb \ mongod.cfg" với cờ --repair cho MongoDB để sử dụng các thiết lập tùy chỉnh của tôi. Odd rằng nó không được đọc từ tập tin đó với việc sửa chữa. –

+0

hoạt động .. Cảm ơn +1 –

9

Nếu bạn làm một hoạt động sửa chữa với người dùng root hãy chắc chắn rằng các tập tin sau đó tất cả db được sở hữu bởi người sử dụng MongoDB, nếu không MongoDB sẽ không bắt đầu

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

Lưu ý - chức năng thay thế cũng có sẵn trong trình bao với trình trợ giúp db.repairDatabase() cho lệnh repairDatabase.

Xem thêm http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/:

+0

Dòng đầu tiên có phải là một ví dụ về tập lệnh không? Sau đó, thêm chúng với 4 khoảng trống để định dạng dưới dạng mã chứ không phải dưới dạng danh sách. – Artemix

Các vấn đề liên quan