Mac OS 10.15 (कैटालिना) में अपग्रेड करने के बाद MongoDB डेटा निर्देशिका नहीं पा सकता है


61

मैंने आज मैकओएस 10.15 (कैटालिना) को अपडेट किया। जब मैं mongodटर्मिनल में दौड़ता हूँ तो वह /data/dbनिर्देशिका नहीं पा सकता :

  /Users/william > mongod
2019-10-08T17:02:44.183+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] MongoDB starting : pid=43162 port=27017 dbpath=/data/db 64-bit host=Williams-MacBook-Pro-6.local
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] db version v4.0.3
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] allocator: system
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] modules: none
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] build environment:
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-10-08T17:02:44.209+0800 I CONTROL  [initandlisten] options: {}
2019-10-08T17:02:44.211+0800 I STORAGE  [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-10-08T17:02:44.211+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] now exiting
2019-10-08T17:02:44.211+0800 I CONTROL  [initandlisten] shutting down with code:100
  /Users/william > 

मैंने इसके साथ MongoDB स्थापित करने का प्रयास किया brew:

brew install mongodb

  /Users/william > brew install mongodb
Updating Homebrew...
Error: mongodb: unknown version :mountain_lion

कोई मदद?

जवाबों:


91

यह मुख्य त्रुटि है:

अपवाद initAndListen: NonExistentPath: डेटा निर्देशिका / डेटा / db नहीं मिला।, समाप्त कर रहा है

कैटालिना में एक आश्चर्यजनक परिवर्तन है: यह रूट निर्देशिका में परिवर्तन की अनुमति नहीं देगा (यह एक मंच के रूप में अच्छी तरह से चर्चा की गई थी ):

% sudo mkdir -p /data/db
mkdir: /data/db: Read-only file system

दुर्भाग्य से, यह स्पष्ट रूप से एप्पल के कैटालिना रिलीज नोटों में स्पष्ट नहीं है , केटालिना की विशेषताओं में एक संक्षिप्त उल्लेख के अलावा :

macOS कैटालिना एक समर्पित, केवल-पढ़ने के लिए सिस्टम वॉल्यूम में चलता है

चूंकि निर्देशिका /data/dbको MongoDB डिफ़ॉल्ट के रूप में कोडित किया dbpathगया है, इसलिए रूट निर्देशिका पर स्थित नहीं है एक अलग निर्दिष्ट करने के लिए एक समाधान है । उदाहरण के लिए:

mongod --dbpath ~/data/db

यह आपके होम डायरेक्टरी में MongoDB का डेटा रखेगा। बस यह सुनिश्चित करें कि पथ ~/data/dbवास्तव में मौजूद है।

वैकल्पिक तरीका

एक वैकल्पिक विधि का उपयोग करके MacOS पर MongoDB समुदाय संस्करण स्थापित करके निर्देशों का पालन करना है brew:

brew tap mongodb/brew
brew install mongodb-community

यह डिफ़ॉल्ट रूप से कुछ अतिरिक्त फ़ाइलें बनाएगा:

  • कॉन्फ़िगरेशन फ़ाइल (/us/local/etc/mongod.conf)
  • लॉग निर्देशिका पथ (/ usr / स्थानीय / var / लॉग / mongodb)
  • डेटा निर्देशिका पथ (/ usr / स्थानीय / var / mongodb)

चलाने के लिए mongodआप या तो कर सकते हैं:

  • कमांड लाइन से मैन्युअल रूप से कमांड चलाएं (यह सुविधा के लिए अलियास किया जा सकता है):

    mongod --config /usr/local/etc/mongod.conf
  • का उपयोग कर एक सेवा के रूप में MongoDB चलाएँ brew services। ध्यान दें कि यह MongoDB एक स्टैंडअलोन नोड (प्रतिकृति सेट नहीं) के रूप में चलेगा, इसलिए जब तक आप mongodकॉन्फ़िगरेशन फ़ाइल को संशोधित नहीं करते हैं, तब तक जो विकल्प oplog पर निर्भर करता है, जैसे कि changestreams काम नहीं करेगा।

    brew services start mongodb-community

उत्तर के लिए धन्यवाद, bash_profile में dbpath को कॉन्फ़िगर करने की कोई विधि? ताकि, हर बार DB पथ के साथ mongod चलाने की कोई आवश्यकता न हो।
माधवन सुंदरराज

मुझे लगता है, अद्यतन के बाद, OS हटा दिया गया / डेटा / डीबी फ़ोल्डर जो mongodb के तहत मौजूद था
माधवन सुंदरराज

1
@MadhavanSundararaj अगर आप mongodb --dbpath ...बस mongodबैश में टाइप करके चलाना चाहते हैं , तो आप एक उपनाम का उपयोग कर सकते हैं alias mongod='mongod --dbpath ...'और उस उपनाम को अपने में डाल सकते हैं bashrc। यह सबसे साफ समाधान नहीं है, लेकिन यह आपके उद्देश्यों के लिए काम कर सकता है।
केविनडी

नवीनतम macOS zsh का उपयोग नहीं करता है? यदि हां, तो क्या यह अभी भी उपयोग करता है। क्योंकि उपरोक्त सुझाए गए उर्फ ​​ने अपेक्षा के अनुरूप काम नहीं किया
माधवन सुंदरराज

1
@MadhavanSundararaj के लिए zshया किसी अन्य शेल के लिए, आपको उस शेल की आरसी फ़ाइल के तहत उपनाम रखने की आवश्यकता है। के लिए zshयह है ~/.zshrc। सुनिश्चित करें कि आप उपनाम बनाने के साथ-साथ शेल के सिंटैक्स का भी पालन करें।
केविनडी

60

कैटालिना को स्थापित करने के बाद, आपके पास अपने डेस्कटॉप पर एक फ़ोल्डर हो सकता है जिसे कहा जाता है Relocated Items। आप data/dbफ़ोल्डर के अंदर फ़ोल्डर पा सकते हैं Security

मुझे बस इतना करना था Security/data/db, विशेष रूप से data/dbऔर इसे अपने होम फोल्डर के अंदर रखना था।

आप निम्न कमांड को चलाकर फाइंडर ऐप के साथ या टर्मिनल के साथ ऐसा कर सकते हैं:

sudo mv /Users/Shared/Relocated\ Items/Security/data ~/

उसके बाद रन: mongod --dbpath ~/data/db

यह आपके ऊपर है कि आप पहले उपनाम तैयार करें


6
मैं लगभग पागल हो गया था कि कैटालिना अपग्रेड मेरे सारे डेटा को मिटा सकता था। मुझे पागलपन से बचाने के लिए धन्यवाद!
एडम बुबेला

1
धन्यवाद @MarnixHarderwijk, यह मेरे लिए काम करता है।
ज़ेयेद

2
आपका बहुत-बहुत शुक्रिया, आपने मेरा दिन बचाया, MacOS Catalina
afr

जब मुझे मैंडॉग कमांड मिलती है, तो: "मोंगॉड" को खोला नहीं जा सकता क्योंकि डेवलपर को सत्यापित नहीं किया जा सकता है।
रज़

@Raz: मुझे लगता है कि यह संबंधित Apple.stackexchange.com/questions/362883/…
Marnix Harderwijk

7

केविनदी ने पहले ही सवाल का न्याय किया, लेकिन इस तरह से मैं इस समस्या को हल करने के बारे में गया:

मंगोल-समुदाय स्थापित करने के बाद

  1. sudo mkdir -p /System/Volumes/Data/data/db (डेटा / डीबी फ़ोल्डर बनाएँ)
  2. sudo chown -Rid -un /System/Volumes/Data/data/db(अनुमति दें)
  3. mongod --dbpath=/System/Volumes/Data/data/db (मंगोलगढ़ के dbpath बदलें)
  4. mongod (अच्छी तरह से चलाता है)

मुझे यह लेख mongodb को बहुत उपयोगी बनाने पर मिला


इस समस्या को ठीक करने की कोशिश करने के 1 दिन बाद मदद मिली! लेख में dbpath को बदलने का उल्लेख नहीं है और यही बात मुझे याद आ रही है
mhlavacka

1

एक चाल मिली ... निर्देशिका से ~ / डेटा / डीबी पूरे फ़ोल्डर को हटा दें फिर एक नया बनाएँ लेकिन इसके बजाय mkdir -p / data / db का उपयोग न करें, बस अपने ट्रैकपैड का उपयोग करें इसे फ़ोल्डर बनाने के लिए सिस्टम तरीके का उपयोग करें

यह मेरे लिए काम किया


यह काम नहीं किया :-(
Mo.

1

यहाँ मेरे लिए क्या काम किया गया है:

  1. कहीं एक फ़ोल्डर बनाएँ जैसे विकास / मोंगोडब / डेटा / डीबी
  2. ओपन mongod.conf फ़ाइल और अद्यतन storage.dbPath को नव निर्मित फ़ोल्डर पथ मूल्य

1
कहाँ mongod.conf फ़ाइल है ??
वल्रोब डेस 3'19

2
यह डिफ़ॉल्ट फ़ाइल है। इस लिंक पर जाएं: docs.mongodb.com/manual/reference/configuration-options और फिर "कॉन्फ़िगरेशन फ़ाइल"
रोलू


0

मैक संस्करण कैटालिना ने बनाया रूट फ़ोल्डर अब लिखने योग्य नहीं है।

ब्रू में एक नया पथ (जो इसे स्वयं बनाता है) का उपयोग करने के लिए मोंगोडब का एक अद्यतन संस्करण है, /usr/local/var/mongodbऔर इन निर्देशों का पालन करने से समस्या ठीक हो जाएगी:

अद्यतन mongodb- समुदाय-संस्करण स्थापित करने के लिए गाइड

brew install mongodb-community@VERSION जहां फिक्स के साथ पहला संस्करण 4.2 है


उपरोक्त आदेश को सूडो के साथ निष्पादित किया जाना चाहिए। तब dbPath config का सम्मान किया जाएगा। अन्यथा mongo अभी भी /data/dbकॉन्फ़िगर की परवाह किए बिना चूक करता है ।
मैट हैजमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.