Menu Docs
Página inicial do Docs
/ / /
Driver Rust

Tratamento de erros de operação

Nesta página

  • Visão geral
  • Tipo de erro
  • Erros de conexão
  • Tipos de erro de gravação
  • Erro de preocupação de gravação
  • WriteError

Esta página descreve os erros que você pode encontrar ao usar o MongoDB Rust Driver para executar operações do MongoDB. Depois de entender os tipos de erros de operação que o driver gera, você pode tomar a ação apropriada para gerenciá-los ou corrigir o código que causa o erro.

Observação

Esta página aborda apenas o tratamento de erros de operação. Se você encontrar qualquer outro problema com o MongoDB ou com o driver, acesse os seguintes recursos:

  • Solução de problemas de conexão para possíveis soluções para problemas que você pode encontrar ao se conectar a uma implementação do MongoDB

  • Página de Problemas e Ajuda para obter informações sobre como reportar bugs, contribuir para o driver e encontrar mais recursos

  • Fóruns daMongoDB Community para perguntas, discussões ou suporte técnico geral

Se o driver encontrar um erro ao executar uma operação, ele retornará um erro do tipo Erro.

O tipo Error contém o campo kind , que descreve o tipo de erro que ocorreu. O kind campo tem um valor de enum ErrorKind. O enum ErrorKind tem variantes para diferentes tipos de erros, incluindo os seguintes:

  • InvalidArgument: você forneceu um argumento inválido para um método

  • Authentication: o driver encontrou um erro durante a autenticação

  • ServerSelection: o cliente não conseguiu selecionar um servidor para a operação

  • Write: ocorreu um erro durante uma operação de escrita

  • Transaction: ocorreu um erro durante uma transação

Por exemplo, se você tentar executar uma operação de inserção que duplica um valor de campo _id que já está na collection, o driver retornará uma instância Error e imprimirá a seguinte mensagem de erro:

Error: Error { kind: Write(WriteError(WriteError { code: 11000,
code_name: None, message: "E11000 duplicate key error collection:
db.test_coll index: _id_ dup key: { _id: 1 }", details: None })), labels:
{}, wire_version: None, source: None }

Na mensagem de erro anterior, o valor do campo kind é Write. Para saber mais sobre esse tipo de erro, consulte a seção Tipos de erro de gravação deste guia.

Um erro de operação simultânea pode limpar o pool de conexões, interrompendo sua conexão com o servidor. Nessa situação, o driver gera um tipo Error no qual o valor do campo kind é ConnectionPoolCleared. A mensagem de erro descreve o motivo da falha da operação simultânea.

Para saber como ajustar seu pool de conexões para resolver esse erro, consulte Tuting Your Connection Pool Settings no manual do Servidor MongoDB.

Dependendo das circunstâncias que produzem o erro, o driver pode adicionar um rótulo RetryableWriteError ao erro, conforme mostrado na seguinte mensagem de erro:

Error { kind: ConnectionPoolCleared { message: "Connection pool for
localhost:27017 cleared because another operation failed with: Kind:
I/O error: timed out, labels: {}" }, labels: {"RetryableWriteError"},
wire_version: None, source: None }

Essa etiqueta indica que o erro pode ser gravado novamente, o que significa que o driver faz uma tentativa de repetição.

Quando o driver experimenta um erro ao executar uma operação de gravação, ele gera uma instância Error com um valor de campo kind de Write. O corpo da Write variante é o enum WriteFailure, que recebe um valor do tipo WriteError ou WriteConcernError.

O driver gera um erro WriteConcernError quando você executa uma operação de gravação e o driver não consegue satisfazer a referência de escrita especificada. Por exemplo, se você especificar uma write concern de majority para operações em um conjunto de réplicas com três nós, o driver retornará esse erro se a operação de escrita se propagar apenas para um nó.

Para saber mais sobre write concerns, consulte Write Concern no manual do servidor MongoDB.

O driver gera um erro WriteError para quaisquer erros encontrados ao executar uma operação de gravação que não estejam relacionadas à satisfazer a write concern. Como há muitas causas para esse erro, o tipo WriteError contém campos que descrevem o tipo de erro de gravação e o motivo do erro.

Por exemplo, o driver gera um erro WriteError se você tentar inserir um documento em uma collection que viole as regras de validação de esquema da collection. Suponha que a collection tenha uma regra em que o valor do campo quantity deve ser um tipo int . Se você tentar inserir um documento onde o valor de quantity é "three", o driver imprimirá a seguinte mensagem de erro:

Error: Error { kind: Write(WriteError(WriteError { code: 121, code_name:
None, message: "Document failed validation", details:
Some(Document({"failingDocumentId": Int32(1), "details":
Document({"operatorName": String("$jsonSchema"), "title":
String("Numerical Validation"), "schemaRulesNotSatisfied":
Array(...)})})) })), labels: {},
wire_version: None, source: None }

Na mensagem de erro anterior, o campo message descreve o motivo do erro e o campo details fornece detalhes específicos sobre a operação com falha. Para resolver esse erro, você deve revisar o documento para aderir às regras de validação do esquema ou ignorar a validação.

Para saber mais sobre validação de esquema, consulte o guia sobre Validação de Esquema.

Voltar

Solução de problemas de conexão