Menu Docs
Página inicial do Docs
/ / /
Driver Ruby MongoDB
/

Erros comuns

Nesta página

  • Nenhum servidor está disponível para corresponder a preferência
  • OperationFailure ao ler o reconhecimento de data center local com o Auth ativado
  • SocketTimeoutError e erros de resolução de nome na EC2
  • Mongo::Auth::Unauthorized O usuário não está autorizado a acessar

Se você receber o seguinte erro:

> client[:contacts].insert_one({ vpa: 'cool@cool'})
Mongo::Error::NoServerAvailable: No server is available matching preference: #<Mongo::ServerSelector::Primary:0x14987080 tag_sets=[] max_staleness=nil> using server_selection_timeout=30 and local_threshold=0.015
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/server_selector/selectable.rb:115:in `select_server'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/cluster.rb:246:in `next_primary'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/retryable.rb:150:in `legacy_write_with_retry'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/retryable.rb:103:in `write_with_retry'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/collection.rb:422:in `block in insert_one'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/client.rb:485:in `with_session'
from /rvm/gems/ruby-2.4.2/gems/mongo-2.5.0/lib/mongo/collection.rb:421:in `insert_one'
from (irb):6
from /rvm/rubies/ruby-2.4.2/bin/irb:11:in `<main>'

Este erro foi produzido no Ruby Driver versão 2.6.x e anterior. Este erro é gerado quando o driver não consegue se conectar ao servidor. Para resolver isso, você pode tentar o seguinte:

  • Atualize o driver para a versão 2.x mais recente.

  • Verifique se o número da porta está correto na string de URI/connection ou na lista de hosts.

  • Se você estiver se conectando ao Atlas, verifique se as regras de firewall estão configuradas corretamente. Consulte a documentação sobre Segurança de cluster.

  • Se seu aplicação usa um servidor web de bifurcação, consulte a documentação sobre forking.

Veja mais sobre este problema aqui: RUBI-1281.

Se você estiver recebendo o seguinte erro ao tentar ler o banco de dados do local :

Mongo::Error::OperationFailure: not authorized on local to execute command { find: "oplog.rs", filter: { ts:
{ $gte: Timestamp 1497449043000|0 } }, sort: { $natural: 1 } } (13)

Você pode corrigir isso ajustando as funções que seu usuário tem e garantindo que ele tenha privilégios para o banco de dados local. Se quiser acessar especificamente o oplog, também é possível criar uma função personalizada com acesso de leitura à coleção oplog.rs do banco de dados local. Você pode encontrar mais informações sobre o gerenciamento de funções aqui.

Você pode encontrar mais informações sobre esse problema aqui: MONGOID-4446.

Alguns usuários relataram ter recebido o seguinte erro:

Exception
Mongo::Error::SocketTimeoutError
Error
execution expired
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `pack_sockaddr_in'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `block (2 levels) in connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket.rb:199:in `handle_errors'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:57:in `block in connect!'
/usr/lib/ruby/2.3.0/timeout.rb:101:in `timeout'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/socket/ssl.rb:56:in `connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/address.rb:172:in `connect_socket!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connection.rb:86:in `connect!'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connectable.rb:84:in `ensure_connected'
/var/lib/gems/2.3.0/gems/mongo-2.5.0/lib/mongo/server/connection.rb:256:in `write'

Este erro foi relatado pela última vez na versão 2.5.1 do driver Ruby. portanto, atualizar o driver pode resolver esse problema. Um usuário relatou que eles resolveram esse problema da seguinte maneira:

Os servidores DNS no EC2 são gerados em /etc/resolv.conf por padrão. Seguindo a resposta e definindo os servidores de nomes para o Google NS, Consegui corrigir esse problema.

Você pode encontrar mais informações sobre esse problema aqui: MONGOID-4527.

Alguns usuários relataram ter recebido o seguinte erro:

Mongo::Auth::Unauthorized: User ... is not authorized to access ...

Após atualizar para o Ruby Driver versão 2.5+, o driver foi alterado para usar o mecanismo de autorização SCRAM por padrão. Esse erro pode acontecer se o mecanismo de autorização com o qual seu usuário foi criado não corresponder ao mecanismo de autorização usado pelo driver. Você pode especificar o mecanismo de autorização preferido usando a opção auth_mech em seu arquivo mongoid.yml .

Veja mais sobre este problema aqui: RUBI-1684.

Voltar

Início rápido do driver Ruby