php教程

The MongoConnectionException class

(PECL mongo >= 1.0.0)

简介

Thrown when the driver fails to connect to the database.

There are a number of possible error messages to help you diagnose the connection problem. These are:

  • No candidate servers found

    Thrown when the driver cannot establish a connection to MongoDB (fulfilling the ReadPreferences, if specified).

  • No server name given.

    This error occurs if you pass in "" as the server name, probably because of an typo with string interpolation, e.g., "$servr" instead of "$server".

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

    This indicated that the server string was malformed. "[hostname]" and "[portnum]" will be as much as the driver could dicipher of it.

  • Operation in progress

    Connecting to the database timed out.

  • Transport endpoint is not connected

    Generally means that the connection string isn't correct, the driver couldn't even find the database server.

  • couldn't determine master

    No server in a replica set connection was identified as the primary.

  • couldn't get host info for [server]

    This indicated that DNS could not resolve the server address you gave. This could easily be caused by a typo, for example, "server" instead of "$server".

  • Invalid Argument

    This can be caused by attempting to connect to a machine that is up but that the database isn't actually running on. Make sure that you've started the database server before connecting.

  • Permission denied

    This means that the socket could not be opened due to permissions issues. On Red Hat variants, this can be caused by a default setting that does not allow Apache to create network connections. You can override this setting by running:

    $ /usr/sbin/setsebool -P httpd_can_network_connect 1
    then restarting Apache.

If the error message is not listed above, it is probably an error from the C socket, and you can search the web for its usual cause.

类摘要

MongoConnectionException extends MongoException {
}

User Contributed Notes

jefffan24+phpcomment at gmail dot com 07-Mar-2013 04:31
If you have MongoClient class available and use persist option you will have a bad time and get a MongoConnectionException

For example if you have:

<?php
$options
= array(
           
'replicaSet' => false,
           
'persist' => false,
           
'connect' => false
       
);
return new \
Mongo('mongodb://...', $options);
?>

This will not work if you have the mongo client class a better way to handle this if your not sure what is on the server this code is running on is the following:

<?php
$options
= array(
           
'replicaSet' => false,
           
'connect' => false
       
);
        if(!
class_exists('MongoClient')){
           
$options['persist'] = false;
        }
        return new \
Mongo('mongodb:/...', $options);
?>

This will only add it in the case where MongoClient doesn't exist and it needs it.  Hope this saves anyone some heart ache.

CopyRight © 2008-2022 verySource.Com All Rights reserved. 京ICP备17048824号-1 京公网安备:11010502034788