- ベストアンサー
mongoDBのshellでデータベース作成について
- mongoDBのshellを使用してデータベースを作成する方法について詳しく教えてください。
- mongoDBのインストールが完了したが、testデータベースに接続できないエラーが発生しています。解決方法を教えてください。
- mongoDBのインストール中に何か間違いがあったのか、または設定が必要なのか詳しい方にご教示いただきたいです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
あれれ? なんだかわかりませんが、端末のメッセージが正常なものに変わってますね。 C:\>mongo MongoDB shell version: 3.2.6 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > 最後の > で mongo shell が命令を待ってます。ちなみにこのメッセージはクライアントとサーバが初めて接続した時だけ出るもので、次からは以下のような簡単なメッセージになります。 C:\>mongo MongoDB shell version: 3.2.6 connecting to: test > 試しに show log でも試してみましょう。これはクライアントでサーバのログを表示させるコマンドです。今実行すると、サーバの端末と同じメッセージが表示されるはずです。 > show log 2016-06-12T17:41:38.788+0900 I CONTROL [initandlisten] MongoDB starting : pid=3744 port=27017 (中略) connection accepted from 127.0.0.1:49717 #1 (1 connection now open) > ここまでできればサーバもクライアントも正常に動いています。
その他の回答 (5)
まだ原因の特定はできませんが、サーバが起動していないようにも見えます。クライアントの出力を見ると 27017 ポートで接続しようとしてますが、そのポートで動いているサーバがないという状態ではないでしょうか(netstat で 27017 ポートが確認できないことから推測)。 tasklist で確認してみましょう。まずはサーバを起動してない状態で実行します。 C:\Users\inataya>tasklist /fi "imagename eq mongod.exe" 情報: 指定された条件に一致するタスクは実行されていません。 ここでは該当するタスクがないのが正常です。もし、該当するタスクがあったら、質問者さんの知らないところでサーバが起動しています。 次に、サーバを起動して実行します。ここでは該当するタスクがあるのが正常です。PID は mongod を起動したときに表示されたものと同じです。 C:\Users\inataya>tasklist /fi "imagename eq mongod.exe" イメージ名 PID セッション名 セッション# メモリ使用量 ========================= ======== ================ =========== ============ mongod.exe 5932 Console 1 44,356 K ここでもタスクが表示されない場合はサーバがうまく起動してないと思われます。 最後に、簡単な質問を三つしますので補足お願いします。 1. ここまでの検証は mongod を Windows サービスとして登録してない状態です。質問者さんの環境はどうですか? 2. また、設定ファイルを編集したり、サーバ起動時に --dbpath 以外のオプションを指定したりもしてません。質問者さんのほうはどうでしょう? 3. 前回の回答で書きましたが、クライアントを起動したときにサーバのメッセージは変化しましたか?
補足
tasklist コマンドは、サーバーを起動した場合C:\Users\Shiro>tasklist /fi "imagename eq mongod.exe" Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ mongod.exe 608 Console 2 44,312 K と表示されました。 3つの質問にお答えします。 1:mongod を Windows サービスとして登録する方法などはまだ知りません。 2:設定ファイルの編集はしておりませんし、サーバ起動時に --dbpath 以外のオプションを指定したりもしてません。 3:サーバーを起動して、 2016-06-11T21:38:00.029-0700 I NETWORK [initandlisten] waiting for connections on port 27017 と表示された後、別のコマンドプロンプトからクライアントを起動させると C:\>mongo MongoDB shell version: 3.2.6 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > と表示されました。 またサーバーのほうにも 2016-06-11T21:38:20.819-0700 I NETWORK [initandlisten] connection accepted from 127.0.0.1:55188 #1 (1 connection now open) という文が追加されています。 なんだかうまく起動しているようですが、これでよいのでしょうか?
補足ありがとうございます。それでは別の確認をしましょう。MongoDB のサーバ、クライアントが起動していたらすべて終了しておきます。 まずはデフォルトのデータディレクトリで動作させてみます。デフォルトのディレクトリは C:\data\db\ です。存在しないとサーバの起動でエラーになりますから、ない場合は先に作成してください(中身は空でかまいません)。 サーバを起動します。 C:\>mongod 2016-06-11T13:17:19.982+0900 I CONTROL [initandlisten] MongoDB starting : pid=5768 port=27017 dbpath=C:\data\db\ 64-bit host=DESKTOP-M8I6E5F (中略) 2016-06-11T13:17:20.729+0900 I NETWORK [initandlisten] waiting for connections on port 27017 (このまま待機状態になります) 最初の行にある pid と port の値を、netstat で確認します。 C:>netstat -nao アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 896 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 520 TCP 0.0.0.0:27017 0.0.0.0:0 LISTENING 4240 … ローカルアドレスが 0.0.0.0:27017 になっている行で、PID が先ほどの値と同じか確認してください。また、状態も LISTENING であれば正常です。この時点で、サーバの起動は問題ないと思われます。 次に、別の端末でクライアントを起動します。通常であればサーバがメッセージを出力するので、サーバを起動した端末も見ててください。 C:\>mongo MongoDB shell version: 3.2.6 connecting to: test > (mongo shell に入った) 接続に成功した場合、サーバからは "connection accepted from ..." というメッセージが出ます。 2016-06-11T13:17:20.729+0900 I NETWORK [initandlisten] waiting for connections on port 27017 (下のメッセージが追加された) 2016-06-11T13:41:02.882+0900 I NETWORK [initandlisten] connection accepted from 127.0.0.1:50257 #1 (1 connection now open) エラーになっても何らかのメッセージは出ると思います。どんなメッセージだったか教えてください。 もし、メッセージが出ない場合はサーバとの通信ができていない可能性があります。原因は特定できませんが、ファイアウォールなどでブロックされているのかもしれません。 ここまでのテストでうまくいったら、データディレクトリを C:\mongodata\db にして同じようにやってみてください。
補足
>ローカルアドレスが 0.0.0.0:27017 になっている行 というのはなくて TCP 127.0.0.1:27015 0.0.0.0:0 LISTENING 2504 TCP 127.0.0.1:27015 7.0.0.1:49690 ESTABLISHED 2504 というんが一番近いものです。 やはりサーバーがきちんと起動してないのでしょうか。
たびたびすみません、#1, #2 です。 サーバ、クライアントを終了させた状態で、C:\mongodata\db の mongod.lock のサイズを確認してください。自分が試したところでは、サーバを終了させると 0 バイトになります(バージョンによっては削除かな?)。 ファイルが存在し、サイズが 0 バイトでないなら、以前にサーバが異常終了したのだと思います。その場合は mongod.lock を削除し、mongod --repair を実行してみてください。 mongod --repair が終了したらサーバーを起動、クライアントからアクセスできるか結果を教えてください。
補足
mongod.lock ファイルは0バイトでした。
#1 です。もう一点気になることがあったので補足お願いします。mongo のあるディレクトリにパスは通してますか?関係ないように思いますが、コマンドを C:\Program Files (x86)\MongoDB\Server\3.2\bin で実行してるのがちょっと気になりました。 回答についてはもう少しお待ちください。
補足
パスが通ってなかったので環境変数を設定しました。 それでもルートから C:¥>mongo としても やはり exception: connect falied と出てきます。
サーバは起動してる? mongo じゃなくて mongod のほう。
お礼
ご回答有難うございます。 サーバーはdbpathオプションを付けて実行すると次のように表示されるので起動していると思います。 C:\Program Files (x86)\MongoDB\Server\3.2\bin>mongod --dbpath C:\mongodata\db 2016-06-09T20:45:55.793-0700 I CONTROL [initandlisten] MongoDB starting : pid=6432 port=27017 dbpath=C:\mongodata\db 64-bit host=papaShiro 2016-06-09T20:45:55.797-0700 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2 2016-06-09T20:45:55.800-0700 I CONTROL [initandlisten] db version v3.2.6 2016-06-09T20:45:55.806-0700 I CONTROL [initandlisten] git version: 05552b562c7a0b3143a729aaa0838e558dc49b25 2016-06-09T20:45:55.810-0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015 2016-06-09T20:45:55.813-0700 I CONTROL [initandlisten] allocator: tcmalloc 2016-06-09T20:45:55.820-0700 I CONTROL [initandlisten] modules: none 2016-06-09T20:45:55.823-0700 I CONTROL [initandlisten] build environment: 2016-06-09T20:45:55.827-0700 I CONTROL [initandlisten] distmod: 2008plus-ssl 2016-06-09T20:45:55.831-0700 I CONTROL [initandlisten] distarch: x86_64 2016-06-09T20:45:55.833-0700 I CONTROL [initandlisten] target_arch: x86_64 2016-06-09T20:45:55.838-0700 I CONTROL [initandlisten] options: { storage: { dbPath: "C:\mongodata\db" } } 2016-06-09T20:45:55.876-0700 I - [initandlisten] Detected data files in C:\mongodata\db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'. 2016-06-09T20:45:55.913-0700 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=2G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 2016-06-09T20:45:56.719-0700 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 2016-06-09T20:45:56.719-0700 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory 'C:/mongodata/db/diagnostic.data' 2016-06-09T20:45:56.772-0700 I NETWORK [initandlisten] waiting for connections on port 27017 ただし、この後のカーソルが点滅したまま接続を待っているという状況のようなので、これでいいのかどうかわかりません。 mongo を実行したときに connect failed と出るわけですから、やはりサーバーのほうもきちんと起動はしていないということなのでしょうか。
お礼
>show log と入力するとサーバーの表示と同じようなものが出てきました。 違いといえば、サーバーは表示のあとカーソルが点滅していて、クライアントのほうは>プロンプトになっているところだけです。 これでmongoDBが正常にインストールされたわけですね。 これから少しずつデータベースを構築していこうと考えています。 masa_pee さん、色々と手取り足取りで教えて頂いて、本当に有難うございました。