mongodb yerel sunucusu başlatılamıyor


167

Ben mongodb için yeniyim .. mongodkomut ile mongodb yerel sunucu çalıştırmayı denediğimde bu başarısız ve bu hatayı attı ..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

mongod.lockDosya silmeyi denedim ... Çalıştım mongod --repair.. mongod.lockDosya izinlerini de değiştirdim .

ama hiçbir şey çalışmıyor gibi görünüyor .. aynı hatayı göstermeye devam ediyor .. ne yapmalıyım?

Ayrıca git sürüm 1.7.4.1 yükledim ama hata nogitversion gösterir ..


Aynı sorunu yaşadım ve bu çözüm benim için çalıştı stackoverflow.com/questions/5798549/…
Eddie

Yanıtlar:


176

Deneyin:

sudo service mongod stop
sudo mongod

Geçerli etkin mongodb hizmetini durdurmak için yeni bir hizmet başlatmanıza izin verin


1
ben de servis mesajı var ama görmezden ve tekrar "sudo mongod" ile yeniden denemeye karar verdi ve sonra nihayet çalıştı
kpierce8

2
Bu mongod olmamalı (mongodb değil)? Dayanarak docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/...
xavier

5
sudo service mongodb stopUbuntu 14.10'da benim için çalıştı.
Joe Corneli

1
OS X'te servis komutu yoktur. Eğer homebrew üzerinden mongo yüklüyse kullanabilirsiniz brew services. ( unix.stackexchange.com/questions/155715/… aracılığıyla )
Charlie Stanard

1
@HarshaMV `demlemek hizmetleri dur <formula>
Jacob

149

-9 sinyalini kullanarak hasara neden olacağı için işlemi öldürmeyin: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

sudo killall -15 mongodBunun yerine kullan


2
Bu asıl soruya cevap vermiyor.
Beau Grantham

8
killall mongodaynı şeyi yapıyor. -15söyler killallvarsayılan olarak yaptığı bir SIGTERM sinyali göndermek için.
T Blank

4
Aslında bir killall yapmak aslında hizmet durdurmaya çalışmak yerine benim için çalıştı. Yani, soruları cevaplamasa da. Bu yararlı oldu
André Pena

59

Andreas Jung:

"Cts 25 Haz 09:38:51 [initandlisten] listen (): bind () başarısız errno: 98 Soket için zaten kullanılan adres: 0.0.0.0:27017

kendi kendine konuşur.

Mongod'un başka bir örneği zaten çalışıyor ve 27017 olan MongoDB varsayılan bağlantı noktasını ayırıyor.

Ya diğer süreci öldür ya da farklı bir port kullan. "

Bu durumda, aşağıdaki komutu yazın

ps wuax | grep mongo

Şuna benzeyen bir şey görmelisin

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

Şimdi mongod örneği için kill komutunu girin (bu durumda 31936):

kill 31936

29

Cmt 25 Haziran 09:38:51 [initandlisten] listen (): bind () başarısız errno: 98 Soket için zaten kullanılan adres: 0.0.0.0:27017

kendi kendine konuşur.

Mongod'un başka bir örneği zaten çalışıyor ve 27017 olan MongoDB varsayılan bağlantı noktasını ayırıyor.

Ya diğer süreci öldür ya da farklı bir port kullan.


47
Başlangıç ​​sayfasında buldum ... ** Mongodb ** yetenekli olarak yüklendiğinde zaten çalışıyor (bu nedenle örnekte başlatmanız gerekmez). Sonra sadece yazın: $ mongo .. Ben şahsen mongod başlangıç ​​dint beri ve ben quickstart öğretici takip ediyordum .. i dint zaten çalıştığını biliyordu ...
sakthig

@Sakti: Evet, zaten benim için koşuyor! Sanırım yetenek sayesinde yaptım. Teşekkürler!
sk8terboi87 ツ

29

Netstat'tan hangi işlemin mongodb portunu çalıştırdığını öğrenin (27017)

komut:

sudo netstat -tulpn | grep :27017

Çıktı:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

Benim durumumda "6432" pid, sizin durumunuzda farklı olabilir. Ardından aşağıdaki komutu kullanarak bu işlemi öldürün:

sudo kill <pid>

Bu kadar!


25

kullanın:

sudo killall mongod

Sunucuyu durduracaktır.

Sonra yeniden başlatın mongod:

sudo service mongod restart

İşe yaramalı.


23

Zaten çalışan bir işleminiz var. Bunu şu komutla öldürebilirsiniz:

killall mongod

15

Sen yapmak istiyorum killall -15 mongodhala çalışıyor çünkü: Address already in use for socket: 0.0.0.0:27017.

Sonra mongodtekrar koşabilirsiniz .


Neden basit değil killall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
retrovertigo

O zaman mongod çalışan bir süreç olmamalıdır. Belki de adres farklı bir işlem tarafından kullanılıyor
John Ottenlips

7

Çalışan herhangi bir işlem bulamazsanız veya öldürmek işe yaramazsa farklı bir bağlantı noktası deneyin. Örneğin, varsayılan 27017 olduğu için 27018'i deneyin.

mongod  --port 27018

Bunu şu komutla öğrendim, mongod --help


7

Bunun yerine kullanmanızı öneririz:

$sudo service mongodb stop

Işe yarayabilir.


6

Bunlardan birini deneyin killall -15 mongod / killall mongod Bundan sonra bile bu işe yaramazsa, aşağıdaki komutları yazarak db depolama klasörünü kaldırın sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. Activity Monitor , mongod'u arayın , çaprazlayın. sonra tekrar koşun. sorun çözüldü.


OP işletim sistemini belirtmez, ancak günlük dosyaları açıkça Linux'u gösterir.
Nic Nilov

4

Terminali açın ve şunu yazın:

mkdir -p /data/db

Ardından şunu girin:

mongod

3

Aynı sorunu yaşadım, yeni bir mongod örneği açmaya çalıştım ve zaten çalıştığını söyledi.

Dokümanları kontrol ettim ve yazdığı söylendi

mongo
use admin
db.shutdownServer()

3

MongoDB başlatılamıyor, esas olarak kirli kapatma nedeniyle. Düzeltmek için mongod.lock dosyasını silin. Bu dosya veri klasöründe bulunur.

Mongodb.conf veya mongod.conf dosyasına bakarak veri klasörünüzün nerede olduğunu öğrenin. (Linux sistemlerinde / etc altındaki Conf dosyası.)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

Örneğin, yukarıdaki yapılandırmayı kullanarak, dosya /var/lib/mongodb/mongod.lock adresindedir. Basitçe kaldırın ve mongodb'u yeniden başlatın.


1
Bu, özellikle yanıt vermediğinde "donanımdan sıfırlanan" bulut sunucularında birden çok kez başıma geldi. Bu kolay bir düzeltme ve en iyi cevap olmalı.
SevakPrime

2

Aynı sorunla karşılaştım. mongodbHizmet çalışmıyor olsa da , günlük address already in useiletiyi gösterdi .

 $netstat -tulpn | grep :27017 

hiçbir şey döndürmez

Daha fazla analizde sorunun kilit dosyasından kaynaklandığı bulundu. Kilit dosyasını sildikten ve yeniden başlattıktan sonra hizmet iyi çalışıyor.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

/Var/log/mongodb/mongod.log adresindeki günlükleri kontrol edin ve hatayı bulmaya çalışın. Benim durumumda

/Tmp/mongodb-27017.sock errno soket dosyasının bağlantısı kaldırılamadı: 1 İşleme izin verilmiyor

Silindi /tmp/mongodb-27017.sock ve işe yaradı.


1

Deneyin

/usr/lib/mongodb/mongod.exe --dbpath c: veri \ db

--dbpath (db'nizin yolu gelmelidir)


1

Sunucunun zaten çalışıyor olması mümkündür. Lütfen mongo komutunun çalışıp çalışmadığını kontrol edin .


1

Windows'ta sorunu çözmek için aşağıdaki adımlar benim için çalışıyor:

Örneğin mongoDB sürüm 3.6 kurulur ve MongoDB kurulum yolu "D: \ Program Files \ MongoDB" olur.

D: \ mongodb \ logs klasörü oluşturun, ardından bu klasörün içinde mongodb.log dosyası oluşturun.

Cmd.exe dosyasını yönetici olarak çalıştırın ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

Bu iki dosyayı mongod.lockve storage.bson"D: \ mongodb \ data" klasörü altında kaldırın .

Sonra net start MongoDByönetici ayrıcalığını kullanarak cmd yazın , sorun çözülecektir.


0

Hata listen (): bind () başarısız olduğunu gösterir errno: 98 Soket için zaten kullanılan adres: 0.0.0.0:27017 yani 27017 adresi başka bir hizmet tarafından zaten kullanılıyor. lütfen bunu "netstat -apt | grep" 27017 "" komutuyla kontrol edin


0

(Eğer linux kullanıyorsanız,)

mongod --shutdown --config=path/to/your/configFile.conf 

veya

mongod --repair --config=path/to/your/configFile.conf 

sorunu çözmedi, oturumu kapattı ve tekrar giriş yapmadı . Bu benim sorunumu çözdü.

Ya da işlemi terminalden manuel olarak öldürebilirsiniz, sanırım.


0

LC_ALL ortam ayarını kaçırdığınızda aynı hata günlüklerde gösteriliyor gibi görünüyor. Kafa karıştırıcı, ancak mongobir sorun olduğunu görmek için istemciyi yürütebilirsiniz .


0

mongo'yu ilk kez çalıştırıyorsanız, önce yolu ayarlamak isteyebilirsiniz

mongod --dbpath <path to the directory>

0

Öldürme süreci sorunumu çözmedi. Benim mac çöktü ve kilit dosyaları (mongod.lock, WiredTiger.lock) bazı restart Mongo DBPath mevcuttu almıştı. Bu dosyaları farklı bir klasöre taşıdım (daha fazla sorunu önlemek için silmedim) ve sonra çalıştı. Ardışık yıldızda, taşınan kilit dosyalarını sildim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.