MongoDB::Error - MongoDB Driver Error classes
version v2.2.2
use MongoDB::Error;
MongoDB::Error->throw("a generic error");
MongoDB::DatabaseError->throw(
message => $string,
result => $hashref,
);
This class defines a hierarchy of exception objects.
Unless otherwise explicitly documented, all driver methods throw exceptions if
an error occurs.
To catch and handle errors, the the Try::Tiny manpage and the Safe::Isa manpage modules
are recommended:
use Try::Tiny;
use Safe::Isa; # provides $_isa
try {
$coll->insert( $doc )
}
catch {
if ( $_->$_isa("MongoDB::DuplicateKeyError" ) ) {
...
}
else {
...
}
};
To retry failures automatically, consider using the Try::Tiny::Retry manpage.
MongoDB::Error
|
|->MongoDB::AuthError
|
|->MongoDB::ConnectionError
| |
| |->MongoDB::HandshakeError
| |
| |->MongoDB::NetworkError
|
|->MongoDB::ConfigurationError
|
|->MongoDB::DatabaseError
| |
| |->MongoDB::CursorNotFoundError
| |
| |->MongoDB::DuplicateKeyError
| |
| |->MongoDB::NotMasterError
| |
| |->MongoDB::WriteError
| |
| |->MongoDB::WriteConcernError
|
|->MongoDB::DecodingError
|
|->MongoDB::DocumentError
|
|->MongoDB::GridFSError
|
|->MongoDB::InternalError
|
|->MongoDB::InvalidOperationError
|
|->MongoDB::ProtocolError
|
|->MongoDB::SelectionError
|
|->MongoDB::TimeoutError
| |
| |->MongoDB::ExecutionTimeout
| |
| |->MongoDB::NetworkTimeout
|
|->MongoDB::UsageError
All classes inherit from MongoDB::Error.
All error classes have the attribute:
-
message — a text representation of the error
This error indicates a problem with authentication, either in the underlying
mechanism or a problem authenticating with the server.
Errors related to network connections.
This error is thrown when a connection has been made, but SSL or authentication
handshakes fail.
This error is thrown when a socket error occurs, when the wrong number of bytes
are read, or other wire-related errors occur.
This error is thrown when there is a configuration error between the MongoDB
deployment and the configuration of the client, such as when trying to use
explicit sessions on a MongoDB < 3.6
This error indicates that a cursor timed out on a server.
Errors related to database operations. Specifically, when an error of this type
occurs, the driver has received an error condition from the server.
Attributes include:
-
result — response from a database command; this must implement the
last_errmsg method
-
code — numeric error code; see ERROR CODES; if no code was provided by the database, the
UNKNOWN_ERROR code will be substituted instead
This error indicates that a write attempted to create a document with a
duplicate key in a collection with a unique index. The result attribute is
a result object.
This error indicates that a write or other state-modifying operation was
attempted on a server that was not a primary. The result attribute is
a the MongoDB::CommandResult manpage object.
Errors indicating failure of a write command. The result attribute is
a result object.
Errors indicating failure of a write concern. The result attribute is a
result object.
This error indicates a problem during BSON decoding; it wraps
the error provided by the underlying BSON encoder. Note: Encoding errors
will be thrown as a MongoDB::DocumentError.
This error indicates a problem with a document to be inserted or replaced into
the database, or used as an update document.
Attributes include:
-
document — the document that caused the error
Errors related to GridFS operations, such a corrupted file.
Errors that indicate problems in the driver itself, typically when something
unexpected is detected. These should be reported as potential bugs.
Errors related to the MongoDB wire protocol, typically problems parsing a
database response packet.
When server selection fails for a given operation, this is thrown. For example,
attempting a write when no primary is available or reading with a specific mode
and tag set and no servers match.
These errors indicate a user-specified timeout has been exceeded.
This error is thrown when a query or command fails because max_time_ms has
been reached. The result attribute is a the MongoDB::CommandResult manpage object.
This error is thrown when a network operation exceeds a timeout, typically
connect_timeout_ms or socket_timeout_ms.
Indicates invalid arguments or configuration options. Not all usage errors
will throw this — only ones originating directly from the MongoDB::* library
files. Some type and usage errors will originate from the the Type::Tiny manpage
library if the objects are used incorrectly.
Also used to indicate usage errors for transaction commands.
The following error code constants are automatically exported by this module.
BAD_VALUE => 2,
UNKNOWN_ERROR => 8,
NAMESPACE_NOT_FOUND => 26,
EXCEEDED_TIME_LIMIT => 50,
COMMAND_NOT_FOUND => 59,
WRITE_CONCERN_ERROR => 64,
NOT_MASTER => 10107,
DUPLICATE_KEY => 11000,
DUPLICATE_KEY_UPDATE => 11001, # legacy before 2.6
DUPLICATE_KEY_CAPPED => 12582, # legacy before 2.6
UNRECOGNIZED_COMMAND => 13390, # mongos error before 2.4
NOT_MASTER_NO_SLAVE_OK => 13435,
NOT_MASTER_OR_SECONDARY => 13436,
CANT_OPEN_DB_IN_READ_LOCK => 15927,
This is a very, very small subset of error codes possible from the server,
but covers some of the more common ones seen by drivers.
Note:
-
Only
MongoDB::DatabaseError objects have a code attribute.
-
The database uses multiple write concern error codes. The driver maps them all to WRITE_CONCERN_ERROR for consistency and convenience.
From MongoDB 4.0 onwards, errors may contain an error labels field. This field
is populated for extra information from either the server or the driver,
depending on the error.
Known error labels include (but are not limited to):
-
TransientTransactionError - added when network errors are encountered inside a transaction.
-
UnknownTransactionCommitResult - added when a transaction commit may not have been able to satisfy the provided write concern.
This software is Copyright (c) 2020 by MongoDB, Inc.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
|