Midwest PHP Call For Papers Open

Класс MongoConnectionException

(PECL mongo >= 1.0.0)

Введение

Выбрасывается, когда драйвер не может подключиться к базе данных.

Существует ряд возможных сообщений об ошибках, которые помогут вам диагностировать проблему подключения. Это:

  • No candidate servers found

    Ошибка возникает, когда драйвер не может установить соединение с MongoDB (выполняется ReadPreferences, если указано).

  • No server name given.

    Ошибка возникает, если вы передаете "" в качестве наименования сервера, возможно, из-за опечатки с интерполяцией строк, например, "$servr" вместо "$server".

  • 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 это может быть вызвано настройкой по умолчанию, которая не позволяет Apache создавать сетевые подключения. Вы можете переопределить этот параметр, выполнив:

    $ /usr/sbin/setsebool -P httpd_can_network_connect 1
    затем перезапустите Apache.

Если сообщение об ошибке не указано выше, это, вероятно, ошибка с сокетом C, которую вы можете поискать в интернете.

Обзор классов

MongoConnectionException extends MongoException {
}
add a note add a note

User Contributed Notes 1 note

up
1
jefffan24+phpcomment at gmail dot com
6 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