tidak dapat memulai server lokal mongodb

167

Saya baru mengenal mongodb .. ketika saya mencoba menjalankan server lokal mongodb dengan mongodperintah gagal untuk menjalankan dan melemparkan kesalahan ini ..

/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

Saya mencoba menghapus mongod.lockfile ... Saya berlari mongod --repair.. Saya juga mengubah izin untuk mongod.lockfile.

tapi sepertinya tidak ada yang berhasil .. itu terus menunjukkan kesalahan yang sama .. apa yang harus saya lakukan.?

Saya juga telah menginstal git versi 1.7.4.1 tetapi ia menunjukkan kesalahan nogitversion ..

sakthig
sumber
Saya memiliki masalah yang sama dan solusi ini berhasil untuk saya stackoverflow.com/questions/5798549/...
Eddie

Jawaban:

176

Mencoba:

sudo service mongod stop
sudo mongod

Untuk menghentikan layanan mongodb aktif saat ini, memungkinkan Anda untuk kemudian memulai yang baru

morphy
sumber
1
saya juga mendapat pesan layanan tetapi memutuskan untuk mengabaikannya dan mencoba memulai kembali dengan "sudo mongod" dan setelah itu akhirnya berhasil
kpierce8
2
Bukankah ini mongod (bukan mongodb)? Berdasarkan docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/…
xavier
5
sudo service mongodb stopbekerja untuk saya di Ubuntu 14.10.
Joe Corneli
1
Tidak ada perintah layanan pada OS X. Jika Anda menginstal mongo melalui homebrew, Anda dapat menggunakannya brew services. (via unix.stackexchange.com/questions/155715/… )
Charlie Stanard
1
@HarshaMV `layanan pembuatan berhenti <formula>`
Jacob
149

Jangan bunuh proses menggunakan sinyal -9 karena akan menyebabkan kerusakan: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Gunakan sudo killall -15 mongodsebagai gantinya

RS
sumber
2
Ini tidak menjawab pertanyaan awal.
Beau Grantham
8
killall mongodmelakukan hal yang sama juga. yang -15memberitahu killalluntuk mengirim sinyal SIGTERM, yang tidak secara default.
T Blank
4
Sebenarnya melakukan killall sebenarnya bekerja untuk saya alih-alih mencoba menghentikan layanan. Jadi, meski tidak menjawab pertanyaan. Itu berguna
André Pena
59

Andreas Jung:

"Sab 25 Jun 09:38:51 [initandlisten] listen (): bind () gagal errno: 98 Alamat sudah digunakan untuk soket: 0.0.0.0:7017

berbicara sendiri.

Contoh lain dari mongod sudah berjalan dan mengalokasikan port default MongoDB yaitu 27017.

Bunuh proses lainnya atau gunakan port lain. "

Dalam hal ini, ketikkan perintah berikut

ps wuax | grep mongo

Anda akan melihat sesuatu yang terlihat seperti ini

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

Sekarang masukkan perintah kill untuk instance mongod (31936 dalam kasus ini):

kill 31936
Sacha Nacar
sumber
29

Sab 25 Jun 09:38:51 [initandlisten] listen (): bind () gagal errno: 98 Alamat sudah digunakan untuk socket: 0.0.0.0:7017

berbicara sendiri.

Contoh lain dari mongod sudah berjalan dan mengalokasikan port default MongoDB yaitu 27017.

Bunuh proses lainnya atau gunakan port lain.

Andreas Jung
sumber
47
Ditemukan ini di halaman memulai ... ** Ketika mongodb ** diinstal melalui aptitude sudah berjalan (jadi dalam contoh Anda tidak perlu memulainya). Kemudian ketik: $ mongo .. karena saya pribadi tidak memulai mongod dan saya mengikuti tutorial cepat .. saya tidak tahu itu sudah berjalan ...
sakthig
@ Sakti: Ya, itu sudah berjalan untuk saya! Saya kira saya lakukan melalui bakat. Terima kasih!
sk8terboi87 ツ
29

Cari tahu dari netstat proses mana yang menjalankan port mongodb (27017)

perintah:

sudo netstat -tulpn | grep :27017

Output akan menjadi:

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

Dalam kasus saya "6432" adalah pid, mungkin berbeda dalam kasus Anda. Kemudian bunuh proses itu menggunakan perintah berikut:

sudo kill <pid>

Itu dia!

kabirkukreti
sumber
25

Menggunakan:

sudo killall mongod

Ini akan menghentikan server.

Kemudian mulai kembali mongoddengan:

sudo service mongod restart

itu harus bekerja.

Asutosh Hota
sumber
23

Anda sudah memiliki proses yang berjalan. Anda dapat membunuhnya dengan perintah:

killall mongod
Younux
sumber
15

Anda ingin melakukannya killall -15 mongodkarena masih berjalan: Address already in use for socket: 0.0.0.0:27017.

Maka Anda bisa lari mongodlagi.

John Ottenlips
sumber
Kenapa tidak sederhana saja killall mongod?
Dmitri Zaitsev
1
No matching processes belonging to you were found
retrovertigo
Maka mongod tidak harus menjadi proses yang berjalan. Mungkin alamat sedang digunakan oleh proses yang berbeda
John Ottenlips
7

Coba port lain jika Anda tidak dapat menemukan proses yang sedang berjalan atau mematikannya tidak berfungsi. Misalnya, coba 27018 karena standarnya adalah 27017.

mongod  --port 27018

Saya menemukan ini dengan perintah, mongod --help

Samantha
sumber
7

Saya sarankan gunakan sebagai gantinya:

$sudo service mongodb stop

Itu bisa berhasil.

Nick Cuevas
sumber
6

Coba killall -15 mongod / killall mongod Bahkan setelah ini jika ini tidak berhasil maka hapus folder penyimpanan db dengan mengetikkan perintah berikut sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db

SU15
sumber
5

OS X. Monitor Aktivitas , cari mongod , silangkan. lalu jalankan lagi mongod. masalah terpecahkan.

Hussain Chatha
sumber
OP tidak menentukan OS tetapi file log dengan jelas menunjukkan Linux.
Nic Nilov
4

Buka terminal dan ketik:

mkdir -p /data/db

Lalu masukkan:

mongod
Jhonatta
sumber
3

Saya memiliki masalah yang sama jika saya mencoba membuka instance baru mongod dan dikatakan sudah berjalan.

Saya memeriksa dokumen dan katanya untuk mengetik

mongo
use admin
db.shutdownServer()
selamat tidur
sumber
3

MongoDB tidak dapat memulai terutama karena shutdown yang tidak bersih. Untuk memperbaiki, hapus file mongod.lock. File ini terletak di folder data.

Cari tahu di mana folder data Anda dengan melihat file mongodb.conf atau mongod.conf. (File conf di bawah / etc pada sistem Linux.)

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

Misalnya menggunakan konfigurasi di atas, file ada di /var/lib/mongodb/mongod.lock. Hapus dan restart mongodb.

Praveen Kumar KS
sumber
1
Ini telah terjadi pada saya lebih dari sekali, terutama pada server cloud yang telah "hard reset" ketika tidak responsif. Ini adalah perbaikan yang mudah dan harus menjadi jawaban teratas.
SevakPrime
2

Saya telah menghadapi masalah yang sama. Meskipun mongodblayanan tidak berjalan, log menunjukkan address already in usepesan.

 $netstat -tulpn | grep :27017 

tidak mengembalikan apa pun

Pada analisis lebih lanjut ditemukan bahwa masalah itu disebabkan oleh file kunci. Layanan berjalan dengan baik, setelah menghapus file kunci dan memulai kembali.

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

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

$service mongod start
Sushma Korati
sumber
2

Periksa log di /var/log/mongodb/mongod.log dan coba simpulkan kesalahannya. Dalam kasus saya itu

Gagal memutus tautan file socket /tmp/mongodb-27017.sock errno: 1 Operasi tidak diizinkan

Dihapus /tmp/mongodb-27017.sock dan berhasil.

Ashish Tiwari
sumber
1

mencoba

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

--dbpath (harus diikuti oleh jalur db Anda)

pengguna3176262
sumber
1

Mungkin saja server sudah berjalan. Silakan periksa dengan perintah mongo berfungsi atau tidak.

Hemant Sharma
sumber
1

Untuk mengatasi masalah di Windows , langkah-langkah di bawah ini berfungsi untuk saya:

Misalnya mongoDB versi 3.6 diinstal, dan jalur instal MongoDB adalah "D: \ Program Files \ MongoDB".

Buat folder D: \ mongodb \ logs, lalu buat file mongodb.log di dalam folder ini.

Jalankan cmd.exe sebagai administrator ,

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

Hapus dua file ini mongod.lockdan di storage.bsonbawah folder "D: \ mongodb \ data".

Kemudian ketik net start MongoDBcmd menggunakan hak administrator, masalah akan terpecahkan.

Bravo Yeung
sumber
0

Ini menunjukkan kesalahan mendengarkan (): bind () gagal errno: 98 Alamat sudah digunakan untuk soket: 0.0.0.0:7017 yaitu 27017 alamat sudah digunakan oleh beberapa layanan lain. silakan periksa ini dengan perintah "netstat -apt | grep" 27017 ""

pengguna3273866
sumber
0

(Jika Anda menggunakan linux,) if

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

atau

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

tidak memperbaiki masalah, keluar dan masuk kembali . Itu memecahkan masalah saya.

Atau Anda dapat mematikan proses secara manual dari terminal, saya kira.

Javad Sadeqzadeh
sumber
0

Sepertinya kesalahan yang sama ditampilkan di log ketika Anda kehilangan pengaturan lingkungan LC_ALL. Ini membingungkan, tetapi Anda dapat mengeksekusi mongoklien untuk melihat bahwa itu masalah.

Karol Wojtaszek
sumber
0

jika Anda menjalankan mongo untuk pertama kali, Anda mungkin ingin mengatur jalurnya terlebih dahulu

mongod --dbpath <path to the directory>
Sumeet Masih
sumber
0

Proses pembunuhan tidak menyelesaikan masalah saya. Mac saya macet dan restart beberapa file kunci (mongod.lock, WiredTiger.lock) ada di mongo dbPath. Saya memindahkan file-file ini ke folder yang berbeda (saya tidak menghapus untuk menghindari lebih banyak masalah) dan kemudian berhasil. Pada suksesi bintang, saya menghapus file kunci yang dipindahkan.

Tes tes
sumber