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