Menu Docs
Página inicial do Docs
/ / /
Go

Solução de problemas de conexão

Nesta página

  • Erro de conexão
  • Verifique a connection string
  • Configurar firewall
  • Erro de autenticação
  • Verifique a connection string
  • Verificar o mecanismo de autenticação
  • Verificar se o usuário está no banco de dados de autenticação
  • Erro ao enviar mensagem
  • Verifique a connection string
  • Verificar o mecanismo de autenticação
  • Verificar se o usuário está no banco de dados de autenticação
  • Configurar firewall
  • Verifique o número de conexões
  • Erro de tempo limite
  • Definir opção de tempo limite
  • Verifique o número de conexões

Esta página oferece soluções potenciais para problemas que você pode encontrar ao usar o MongoDB Driver Go para se conectar a um sistema do MongoDB.

Observação

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

  • As Perguntas frequentes (FAQ) para o driver Go

  • A página Problemas e ajuda, que contém informações sobre como reportar bugs, contribuir com o driver e encontrar recursos adicionais

  • Os fóruns da MongoDB Community para perguntas, discussões ou suporte técnico geral

A seguinte mensagem de erro é uma mensagem geral indicando que o driver não pode se conectar a um servidor no nome de host especificado ou porta:

Error: couldn't connect to server 127.0.0.1:27017

As seções a seguir descrevem métodos que podem ajudar a resolver o problema.

Verifique se o nome do host e o número da porta na connection string estão corretos. Na mensagem de erro de amostra, o nome do host é 127.0.0.1 e a porta é 27017. O valor de porta padrão para uma instância do MongoDB é 27017, mas você pode configurar o MongoDB para se comunicar em outra porta.

Supondo que o sistema do MongoDB use a porta padrão, verifique se a porta 27017 está aberta no firewall. Se seu sistema usar uma porta diferente, verifique se a porta correta está aberta no firewall.

Aviso

Não abra uma porta no firewall, a menos que tenha certeza de que é a porta usada pela instância do MongoDB.

O driver Go pode falhar ao conectar a uma instância do MongoDB se a autorização não estiver configurada corretamente. Nesses casos, o driver levanta uma mensagem de erro semelhante a uma das seguintes mensagens:

Command failed with error 18 (AuthenticationFailed): 'Authentication
failed.' on server localhost:27017.
connection() error occurred during connection handshake: auth error:
sasl conversation error: unable to authenticate using mechanism
"SCRAM-SHA-256": (AuthenticationFailed) Authentication failed.

As seções a seguir descrevem métodos que podem ajudar a resolver o problema.

Uma connection string inválida é a causa mais comum de problemas de autenticação ao tentar se conectar ao MongoDB.

Dica

Para obter mais informações sobre connection strings, consulte URI de conexão no Guia de conexão.

Se sua connection string contiver um nome de usuário e senha, certifique-se de que eles estejam no formato correto.

Observação

Se o nome de usuário ou senha incluir qualquer um dos seguintes caracteres, eles devem usar codificação percentual:

: / ? # [ ] @

Ao conectar a um conjunto de réplicas, você deve incluir todos os hosts no conjunto de réplicas em sua string de conexão. Separe cada um dos hosts na string de conexão com uma vírgula. Isto permite ao condutor estabelecer uma conexão se um dos hosts não estiver acessível.

Verifique se as credenciais e o mecanismo de autenticação estão corretos. Você pode armazenar suas credenciais de autenticação em variáveis de ambiente ou pode passá-las para o método SetAuth() .

Para saber mais sobre autenticação, consulte o guia Mecanismos de autenticação.

Para autenticar uma conexão corretamente usando um nome de usuário e uma senha, o nome de usuário deve ser definido no banco de dados de autenticação. O banco de dados de autenticação padrão é o banco de dados admin. Para usar outro banco de dados de autenticação, especifique o authSource na connection string. O exemplo abaixo orienta o driver a usar o users como banco de dados de autenticação:

uri := "mongodb://<username>:<password>@<hostname>:<port>/?authSource=users"
client := mongo.Connect(uri)

Quando o driver não envia um comando após você fazer uma solicitação, ele geralmente exibe a seguinte mensagem de erro geral:

com.mongodb.MongoSocketWriteException: Exception sending message

As seções a seguir descrevem métodos que podem ajudar a resolver o problema.

Verifique se a string de conexão em seu aplicativo está correta. Para obter mais informações sobre como verificar sua string de conexão, consulte Erro de conexão e Erro de autenticação.

Verifique se você está usando o mecanismo de autenticação e as credenciais corretas. Para obter mais informações sobre erros de autenticação, consulte Erro de autenticação.

Verifique se o usuário está no banco de dados de autenticação correto. Para obter mais informações sobre o banco de dados de autenticação, consulte Erro de autenticação.

O firewall precisa ter uma porta aberta para se comunicar com a instância do MongoDB. Para obter mais informações sobre como configurar o firewall, consulte Erro de conexão.

Cada instância do MongoClient aceita um número máximo de conexões abertas simultâneas em seu pool de conexões. O parâmetro de configuração maxPoolSize define este valor e é configurado para 100 por padrão. Se já houver uma série de conexões abertas iguais a maxPoolSize, o servidor aguardará até que uma conexão se torne disponível. Se esse tempo de espera exceder o valor de maxIdleTimeMS, o driver responderá com um erro. Para obter mais informações sobre como o pool de conexões funciona, consulte Como funciona o pool de conexões no Driver Go?, nas Perguntas frequentes.

Às vezes, ao enviar uma solicitação pelo driver para o servidor, a solicitação expira. Se isso acontecer, você pode receber uma mensagem de erro semelhante à seguinte:

timed out while checking out a connection from connection pool: context canceled

Se você receber esse erro, tente os métodos a seguir para resolver o problema.

O Client aceita uma única opção Timeout que controla a quantidade de tempo que uma única operação pode levar para ser executada. Configure este valor utilizando o método SetTimeout() ou especificando a opção timeoutMS em sua connection string.

O exemplo a seguir define o valor de tempo limite único para 5 segundos usando a opção de connection string:

uri := "mongodb://<username>:<password>@<hostname>:27017/?timeoutMS=5000"
client := mongo.Connect(uri)

O número de conexões com o servidor pode exceder maxPoolSize. Para obter mais informações sobre como conferir o número de conexões, consulte Erro ao enviar mensagem.

Voltar

Perguntas frequentes

Próximo

Problemas e ajuda