The MongoConnectionException class
(PECL mongo >= 1.0.0)
Introduction
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
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.
Class synopsis
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- MongoDB
- The MongoException class
- The MongoResultException class
- The MongoCursorException class
- The MongoCursorTimeoutException class
- The MongoConnectionException class
- The MongoGridFSException class
- The MongoDuplicateKeyException class
- The MongoProtocolException class
- The MongoExecutionTimeoutException class
- The MongoWriteConcernException class
Коментарии
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.