Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Solución de problemas de conexión

Esta página ofrece posibles soluciones a los problemas que puede encontrar al utilizar MongoDB Rust driver para conectarse a una implementación de MongoDB.

Nota

Esta página solo trata de problemas de conexión. Si encuentras algún otro problema con MongoDB o el controlador, visita los siguientes recursos:

  • Manejo de Errores de Operación para recomendaciones sobre cómo gestionar los diferentes tipos de errores que el driver genera durante las operaciones

  • Página deproblemas y ayuda para obtener información sobre cómo informar errores, contribuir al controlador y encontrar más recursos

  • El MongoDB Etiqueta de Stack Overflowo la comunidad MongoDB Reddit para preguntas, debates o soporte técnico general

  • La sección Preguntas frecuentes (FAQ) para preguntas comunes y respuestas correspondientes sobre el controlador Rust.

Si ocurre un problema al intentar conectarse a un servidor, el controlador Rust genera un mensaje de error. Si este error se asemeja al siguiente mensaje, indica que el driver no puede conectarse a una implementación de MongoDB:

Error: Error { kind: ServerSelection { message: "Server selection timeout:
No available servers. Topology: { Type: Unknown, Servers: [ { Address:
127.0.0.1:27017, Type: Unknown, Error: Kind: I/O error: Connection refused
(os error 61), labels: {} } ] }" }, labels: {}, wire_version: None, source:
None }

Las siguientes secciones describen métodos que podrían ayudar a resolver el problema.

Verifica que el nombre del host y el número de puerto en la cadena de conexión sean correctos. En el mensaje de error de muestra, el nombre de host es 127.0.0.1 y el puerto es 27017. El valor de puerto por defecto para una instancia de MongoDB Server es 27017, pero puedes configurar MongoDB para escuchar en otro puerto.

Cuando te conectes a un set de réplicas, incluye todos los hosts del set de réplicas en tu cadena de conexión. Separar cada uno de los hosts en la cadena de conexión con una coma. Esto permite que el driver establezca una conexión si uno de los hosts es inaccesible.

Para obtener más información sobre cómo especificar varios hosts en un set de réplicas, consulta la sección Conectarse a un set de réplicas de la Guía de conexión.

Si tu implementación de MongoDB está alojada detrás de un firewall, asegúrate de que el puerto en el que MongoDB escucha esté abierto en el firewall. Si tu implementación escucha en el puerto de red por defecto, asegúrate de que el puerto 27017 esté abierto en el firewall. Si su implementación escucha en un puerto diferente, asegúrese de que ese puerto esté abierto en el firewall.

Advertencia

No abras un puerto de firewall a menos que estés seguro de que es el que utiliza tu implementación de MongoDB.

Cada instancia de Client admite un número máximo de conexiones abiertas simultáneas en su pool de conexiones. El parámetro de configuración maxPoolSize define este valor y, por defecto, está establecido en 100. Si el número de conexiones abiertas es igual a maxPoolSize, el servidor espera hasta que una conexión se vuelva disponible. Si este tiempo de espera supera el valor maxIdleTimeMS, el driver responde con un error.

Para obtener más información sobre cómo funcionan los grupos de conexiones en el controlador, consulte ¿Cómo funciona el agrupamiento de conexiones en el controlador Rust? en la página de preguntas frecuentes.

El driver de Rust podría no ser capaz de conectarse a una implementación de MongoDB si la autorización no está configurada correctamente. En estos casos, el controlador muestra un mensaje de error similar al siguiente:

Error: Error { kind: Authentication { message: "SCRAM failure: bad auth :
authentication failed" }, labels: {}, wire_version: None, source: Some(Error
{ kind: Command(CommandError { code: 8000, code_name: "AtlasError", message:
"bad auth : authentication failed", topology_version: None }),
labels: {}, wire_version: None, source: None }) }

Las siguientes secciones describen métodos que pueden ayudar a resolver el problema.

Una de las causas más comunes de problemas de autenticación es el formato de credenciales no válido en la cadena de conexión de MongoDB.

Tip

Para obtener más información sobre las cadenas de conexión, consulte la guía Crear una cadena de conexión.

Si su cadena de conexión contiene un nombre de usuario y una contraseña, asegúrese de que tengan el formato correcto.

Nota

Si tu nombre de usuario o contraseña incluye alguno de los siguientes caracteres, debes codificar en porcentaje:

: / ? # [ ] @

Usa tu nombre de usuario y contraseña codificados en porcentaje en tu cadena de conexión.

Asegúrate de que tus credenciales y mecanismo de autenticación sean correctos. Se puede especificar tus credenciales de autenticación en las opciones de tu cadena de conexión.

Alternativamente, puedes especificar tus credenciales de autenticación en una estructura Credential.

Para obtener más información sobre la autenticación, consulte la guía Mecanismos de autenticación.

Cuando se utiliza un método de autenticación basado en nombre de usuario y contraseña, el nombre de usuario debe estar definido en la base de datos de autenticación.

La base de datos de autenticación por defecto es la base de datos admin. Para usar una base de datos diferente para la autenticación, especifica la opción authSource en la cadena de conexión.

El siguiente ejemplo instruye a MongoDB para que use la base de datos users como la base de datos de autenticación:

let uri = "mongodb://<username>:<password>@<hostname>:<port>/?authSource=users";
let client = Client::with_uri_str(uri).await?;

Es posible que el controlador de Rust no pueda resolver tu conexión DNS. En este caso, podrías recibir un mensaje de error similar al siguiente:

Error: Error { kind: DnsResolve { message: "sample message. type:
SRV class: IN" }, labels: {}, wire_version: None, source: None }

Si el controlador informa este error, pruebe los métodos de las siguientes secciones para resolver el problema.

Si se está conectando a MongoDB Atlas y su controlador no puede encontrar el host DNS de la implementación de la base de datos Atlas, es posible que la implementación de la base de datos se pause o elimine.

Asegúrese de que la implementación de la base de datos exista en Atlas. Si el clúster está en pausa, puede reanudarlo en la interfaz de usuario de Atlas o en la interfaz de línea de comandos de Atlas.

Para saber cómo reanudar un clúster,consulte Reanudar un clúster en la documentación de Atlas.

Verifica que las direcciones de red o nombres de host en tu cadena de conexión sean precisos.

Si la implementación está alojada en MongoDB Atlas, puedes seguir el tutorial Conectarse a su clúster para encontrar la cadena de conexión de Atlas.

Volver

FAQ