PHP Velho Oeste 2024

Clase MongoConnectionException

(PECL mongo >= 1.0.0)

Introducción

Lanzado cuando falla el driver al conectar a la base de datos.

Existen varios mensajes de error posibles para ayudar a diagnosticar el problema de conexión:

  • No candidate servers found

    Lanzado cuando el controlador no puede establecer una conexión con MongoDB (satisfaciendo las ReadPreferences, si se especifican).

  • No server name given.

    Este error ocurre al pasar "" como nombre de servidor, probablemente por error tipográfico con interpolación de strings, p.ej., "$servr" en lugar de "$server".

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

    Indica que el nombre del servidor está malformado. "[hostname"] y "[portnum]" serán lo que el driver haya descifrado que sean.

  • Operation in progress

    Superado el tiempo de espera de conexión a la base de datos.

  • Transport endpoint is not connected

    Generalmente indica que la cadena de conexión no es correcta. De hecho, el driver no puede ni encontrar el servidor de bases de datos.

  • couldn't determine master

    Ningún servidor de una conexión a un conjunto de réplicas fue identificado como el primario.

  • couldn't get host info for [server]

    Indica que el DNS no puede resolver la dirección de servidor proporcionada. Posiblemente se trate de un error tipográfico, por ejemplo, "server" en lugar de "$server".

  • Invalid Argument

    Puede provocarse al intentar conectar a una máquina que está funcionando pero la base de datos no está funcionando. Asegúrese de que ha iniciado la base de datos antes de conectar.

  • Permission denied

    Significa que el socket no pudo ser abierto debido a los permisos. En las variantes de Red hat, puede ser debido a que la configuración por defecto no permite a Apache crear conexiones de red. Puede modificarse esto ejecutando:

    $ /usr/sbin/setsebool -P httpd_can_network_connect 1
    y reiniciando Apache.

Si el mensaje de error no se encuentra en la lista de arriba, probablemente sea un error del socket C, y podrá buscar en la web la causa del mismo.

Sinopsis de la Clase

MongoConnectionException extends MongoException {
}
add a note add a note

User Contributed Notes 1 note

up
1
jefffan24+phpcomment at gmail dot com
11 years ago
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.
To Top