Midwest PHP Call For Papers Open

Класс MongoException

(PECL mongo >= 1.0.0)

Введение

Стандартное исключение Mongo.

Охватывает множество различных состояний ошибок, которые могут быть конкретизированны, но всегда будут расширять MongoException.

  • The MongoSomething object has not been correctly initialized by its constructor

    Code: 0

    Ошибка возникает, когда ваш объект Mongo не подключен к серверу базы данных.

  • zero-length keys are not allowed, did you use $ with double quotes?

    Code: 1

    Ошибка возникает, когда вы сохраняете "" в качестве ключа. Вы вообще не должны этого делать. "" может испортить доступ к подобъекту и используется MongoDB для внутреннего использования. Однако, если вы действительно хотите, вы можете установить для mongo.allow_empty_keys значение true в файле php.ini, чтобы переопределить эту проверку работоспособности. Если вы переопределите этот параметр, настоятельно рекомендуется установить строгий контроль ошибок, чтобы избежать ошибок интерполяции строк.

  • '.' not allowed in key: <key>

    Code: 2

    Ошибка возникает, когда вы указываете ключ в котором присутствует "." – это запрещено.

  • insert too large: <size>, max: <max>

    Code: 3

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

  • no elements in doc

    Code: 4

    Ошибка возникает, при сохранении документа без полей.

  • size of BSON doc is <size> bytes, max <max>MB

    Code: 5

    Ошибка возникает, при сохранении документа, размер которого больше, чем может сохранить MongoDB.

  • no documents given

    Code: 6

    Ошибка возникает, при пакетной вставке пустого массива документов.

  • MongoCollection::group takes an array, object, or MongoCode key

    Code: 7

    Ошибка возникает, при отправке неверного параметра в MongoCollection::group().

  • field names must be strings

    Code: 8

    Вы должны отформатировать селекторы полей, как массив array("field1" => 1, "field2" => 1, ..., "fieldN" => 1).

  • invalid regex

    Code: 9

    Ошибка возникает, при передаче в MongoRegex неправильного формата регулярного выражения.

  • MongoDBRef::get: $ref field must be a string

    Code: 10

  • MongoDBRef::get: $db field must be a string

    Code: 11

  • non-utf8 string: <str>

    Code: 12

    Эта ошибка возникает, если вы пытаетесь отправить в базу данных строку, отличную от utf8. Все строки, входящие в базу данных, должны быть в формате UTF8. См. Опции php.ini для опции перехода, чтобы смягчить это исключение.

  • mutex error: <err>

    Code: 13

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

  • index name too long: <len>, max <max> characters

    Code: 14

    Нельзя создать индексы с именами длиннее 128 символов. Если вы получили эту ошибку, вы должны использовать опцию "name" MongoCollection::ensureIndex(), чтобы создать более короткое имя для вашего индекса.

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

MongoException extends Exception {
}
add a note add a note

User Contributed Notes 1 note

up
-1
janis dot peisenieks at gmail dot com
5 years ago
In case of "zero-length keys are not allowed, did you use $ with double quotes?" error, checking the saved data for objects with private/protected variables can solve the problem.

It seems, that the PECL extension currently does not support private/protected variables, thus making their keys empty strings. A simple, yet not allways desirable, solution is to make these variables public.

Example:
<?php
class Example
{
    private
$value;
    protected
$output;
}
?>php
will throw an exception.

<?php
class Example
{
    public
$value;
    public
$output;
}
?>php
Will not throw an exception
To Top