Câu hỏi L ERI: dbpath không tồn tại


Tôi đã đặt dbpath trong tệp cấu hình mongodb:

#dbpath=/var/lib/mongodb
dbpath=~/data/db

Sau đó thử khởi động mongodb nhưng gặp lỗi:

ERROR: dbpath (~/data/db) does not exist.

Mặc dù tôi có thể kiểm tra sự tồn tại của ~/data/db dễ dàng:

# cd ~/data/db
user@server:~/data/db# pwd
/root/data/db

Khi tôi chạy nó ...

# mongod --dbpath ~/data/db

... có đầu ra:

Tue Oct 15 05:05:49.040 [initandlisten] MongoDB starting : pid=3786 port=27017 dbpath=/root/data/db 64-bit host=callzone2
Tue Oct 15 05:05:49.040 [initandlisten] db version v2.4.6
Tue Oct 15 05:05:49.040 [initandlisten] git version: b9925db5eac369d77a3a5f5d98a145eaaacd9673
Tue Oct 15 05:05:49.041 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49
Tue Oct 15 05:05:49.041 [initandlisten] allocator: tcmalloc
Tue Oct 15 05:05:49.041 [initandlisten] options: { dbpath: "/root/data/db" }
Tue Oct 15 05:05:49.044 [initandlisten] exception in initAndListen std::exception: locale::facet::_S_create_c_locale name not valid, terminating
Tue Oct 15 05:05:49.044 dbexit: 
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: going to close listening sockets...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: going to flush diaglog...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: going to close sockets...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: waiting for fs preallocator...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: lock for final commit...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: final commit...
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: closing all files...
Tue Oct 15 05:05:49.044 [initandlisten] closeAllFiles() finished
Tue Oct 15 05:05:49.044 [initandlisten] shutdown: removing fs lock...
Tue Oct 15 05:05:49.044 dbexit: really exiting now

Và khách hàng cho thấy rằng máy chủ không bắt đầu:

# mongo
MongoDB shell version: 2.4.6
connecting to: test
Tue Oct 15 05:08:22.139 Error: couldn't connect to server 127.0.0.1:27017 at src/mongo/shell/mongo.js:145
exception: connect failed

Khi tôi chạy theo cách này ...

# sudo service mongodb restart

... có đầu ra trong tệp nhật ký mongo:

*********************************************************************
 ERROR: dbpath (~/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
Tue Oct 15 05:10:39.311 dbexit: 
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: going to close listening sockets...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: going to flush diaglog...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: going to close sockets...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: waiting for fs preallocator...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: lock for final commit...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: final commit...
Tue Oct 15 05:10:39.311 [initandlisten] shutdown: closing all files...
Tue Oct 15 05:10:39.311 [initandlisten] closeAllFiles() finished
Tue Oct 15 05:10:39.311 dbexit: really exiting now

Vì vậy, không thể thay đổi dbpath.

Phiên bản ubuntu của tôi:

# uname -a
Linux hostName 3.2.0-23-virtual #36-Ubuntu SMP Tue Apr 10 22:29:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

4
2017-10-15 05:15


gốc




Các câu trả lời:


Tôi đã giải quyết vấn đề với:

sudo mongod --dbpath=/var/lib/mongodb và sau đó mongo để truy cập vào mongodb Shell.


3
2018-06-30 11:22





Người dùng MongoDB đang hoạt động như một dịch vụ là gì?

Nó thường mongod hoặc là mongodb, không phải root - và trên thực tế bạn không nên chạy nó như là root nói chung. Mặc định dbpath trong Ubuntu là /var/lib/mongodb vì vậy có vẻ như bạn đã thay đổi điều đó trong tệp cấu hình ~/mongodb/db.

Nếu bạn làm điều đó, ~ sẽ mở rộng thành thư mục chính cho người dùng mà dịch vụ đang chạy. Do đó bạn sẽ cần phải tạo /home/mongodb/db hoặc là /home/mongod/db/, không phải /root/dbvà đảm bảo rằng nó được sở hữu bởi người dùng có liên quan để sử dụng cài đặt đó.

Tôi khuyên bạn nên sử dụng đường dẫn đầy đủ để loại bỏ sự nhầm lẫn. Tạo thư mục như /data/mongodb/db hoặc tương tự và đảm bảo rằng nó có quyền sở hữu chính xác (xem câu trả lời này để biết thêm về cách đặt quyền phù hợp).


1
2017-10-15 10:48





Trong kinh nghiệm của tôi mongodb rất cầu kỳ về miền địa phương, tôi đã có cùng một vấn đề, hãy thử:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8

sudo service mongodb restart

0
2018-05-05 13:14