PHP 7.4.0beta4 released!

MongoException クラス

(PECL mongo >= 1.0.0)

はじめに

Mongo のデフォルトの例外です。

さまざまなエラー条件を扱います。最終的にはより詳細な例外にたどり着きますが、 それらもすべて MongoException を継承しています。

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

    コード: 0

    おそらく、Mongo オブジェクトがデータベースに接続していないものと思われます。

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

    コード: 1

    キーとして "" を使おうとしました。一般的に、これはしていはいけないことです。 "" を使うとサブオブジェクトへのアクセスが煩雑になり、またこのキーは MongoDB が内部的に使ってもいます。しかし、どうしても使いたい場合は、php.ini ファイルで mongo.allow_empty_keys に true を設定すればこのチェックを回避できます。 回避するよう設定した場合は、エラーチェックをより厳密に行って 文字列書き込みエラーを防ぐことを推奨します。

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

    コード: 2

    '.' を含むキーに書き込もうとしました。これは禁じられています。

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

    コード: 3

    長すぎるデータをデータベースに一度に送ろうとしました。データベースがデータの追加を受け付けるのは、 ある特定の大きさ (現在は 16 MB) までです。

  • no elements in doc

    コード: 4

    フィールドを持たないドキュメントを保存しようとしました。

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

    コード: 5

    MongoDB で保存可能な長さを超えるドキュメントを保存しようとしました。

  • no documents given

    コード: 6

    空のドキュメントの配列を一括追加しようとしました。

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

    コード: 7

    間違った型パラメータを MongoCollection::group() に送信しました。

  • field names must be strings

    コード: 8

    フィールドセレクタの書式は array("field1" => 1, "field2" => 1, ..., "fieldN" => 1) としなければなりません。

  • invalid regex

    コード: 9

    MongoRegex に渡した正規表現が正しい形式ではありません。

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

    コード: 10

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

    コード: 11

  • non-utf8 string: <str>

    コード: 12

    このエラーが発生するのは、非 utf8 文字列をデータベースに送信しようとしたときです。 データベースに送る文字列はすべて UTF8 でなければなりません。 この例外を発生させなくする移行用オプションは、php.ini のオプションを参照ください。

  • mutex error: <err>

    コード: 13

    マルチスレッド環境では、ドライバはリクエストとレスポンスの同期にミューテックスを使います。 これはきわめて深刻なエラーで、スタックトレースもないかもしれません。 めったに発生しないエラーなので、システムの情報と可能な限りの再現手順を添えてメンテナに報告しましょう。

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

    コード: 14

    128 文字を超える名前のインデックスは作れません。このエラーが発生した場合は、 MongoCollection::ensureIndex() の "name" オプションを使って短いインデックス名をつけなければなりません。

クラス概要

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