# MongoConnectionException クラス

(PECL mongo >= 1.0.0)

## はじめに

ドライバがデータベースへの接続に失敗した場合にスローします。

エラーメッセージにはさまざまなものがあり、 接続時にどんな問題が発生したのかを調べるために役立ちます。 以下にエラーメッセージの例を示します。

- No candidate servers found

  MongoDB への接続の確立 (優先読み込みを指定している場合はそれを反映したもの) ができなかった場合に発生します。

- No server name given.

  このエラーが発生するのは、サーバー名に "" を渡した場合です。 考えられる原因は、文字列中での変数展開用の変数の書き間違い (たとえば "$server" とすべきところを "$servr" にした) などです。

- failed to get host [hostname] or port [portnum] from [server].

  このエラーがあらわすのは、サーバー文字列が不正な形式であるということです。 "[hostname]" および "[portnum]" の部分が、 ドライバがなんとかそれを判読した結果を示しています。

- Operation in progress

  データベースへの接続がタイムアウトしました。

- Transport endpoint is not connected

  一般的には、接続文字列が間違っていて ドライバがデータベースサーバーを見つけられなかったことを意味します。

- couldn't determine master

  レプリカセット接続の中に、プライマリなサーバーがありません。

- couldn't get host info for [server]

  これがあらわすのは、指定したサーバーアドレスを DNS が解決できなかったということです。 打ち間違い ("$server" と書くべきところを "server" とするなど) があると容易にこのエラーが発生します。

- Invalid Argument

  これは、マシン自体は立ち上がっているもののデータベースは稼動していないマシンに接続しようとした場合などに発生します。 接続前に、データベースサーバーが起動しているかどうか確認しておきましょう。

- Permission denied

  権限に関する問題があってソケットをオープンできなかったことをあらわします。 Red Hat 系の OS のデフォルト設定では Apache からネットワーク接続を作成できないようになっているので、 デフォルトでこれが発生します。この設定を書き換えるには、

      $ /usr/sbin/setsebool -P httpd_can_network_connect 1

  を実行してから Apache を再起動します。

これら以外のメッセージが出た場合、おそらくそれは C のソケットからのエラーです。 主な原因についてはウェブを検索して調べましょう。

## クラス概要

MongoConnectionException extends MongoException {
}