Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

496
Visualizações
¿Cómo puedo conectarme a una base de datos Cloud PostgreSQL desde dart code?

Tengo una base de datos PostgreSQL implementada en Google Cloud a la que intento conectarme desde una instancia de Cloud Run. He probado los siguientes dos paquetes, ambos eventualmente conducen a la misma excepción:

  • https://pub.dev/packages/postgres
  • https://pub.dev/packages/database_adapter_postgre

La excepción que obtengo es: SocketException: Failed host lookup: '/cloudsql/{INSTANCE_CONNECTION_NAME}' (OS Error: Name or service not known, errno = -2)

Llego aquí las dos veces cuando trato de establecer la conexión, así que en el caso del primer paquete:

 connection = new PostgreSQLConnection( '/cloudsql/{INSTANCE_CONNECTION_NAME}', 5432, 'postgres', username: 'username', password: 'password'); await connection.open(); // <-- exception thrown here

Intenté cambiar la cadena de host a /cloudsql/INSTANCE_CONNECTION_NAME}/.s.PGSQL.5432 , pero no funcionó. Lo primero que pensé fueron los permisos, la cuenta de servicio que usa la instancia de Cloud Run (xxx-compute@developer.gserviceaccount.com) tiene la función Cloud SQL Editor (también probé Cliente y Administrador).

Ejecutando el mismo código de base de datos localmente desde una aplicación de consola de Dart, puedo conectarme a mi base de datos a través de su dirección IP pública como host con ambos paquetes, por lo que la base de datos en sí está en funcionamiento.

¿Puede alguien indicarme la dirección correcta con esta excepción o tener un código de ejemplo para cualquiera de los paquetes anteriores para mostrar cómo conectarlo a una instancia de Cloud SQL desde Cloud Run?

Editar : intenté configurar un proxy localmente para probar si la conexión es incorrecta, así:

 .\cloud_sql_proxy.exe -instances={INSTANCE_CONNECTION_NAME}=tcp:5433 psql

Luego, cambie el valor del host de conexión en el código a localhost y el puerto a 5433 . Para mi sorpresa, funciona, por lo que desde localmente aparentemente puedo conectarme a la base de datos usando esa cadena de conexión. Sin embargo, todavía no funciona cuando lo uso desde una instancia de Cloud Run. ¡Cualquier ayuda es apreciada!

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Parece que dart no admite la conexión a través de unix socket, debe configurar una IP (pública o privada, según lo necesite).

Alternativamente, puede usar pg que admite la conexión de socket Unix

Espero que esto ayude.

over 4 years ago · Santiago Trujillo Relatório

0

Solo para aquellos que se encuentren con esta pregunta en el futuro: tal como está ahora, tuve que recurrir a la sugerencia publicada por Daniele Ricci y usar la IP pública para la base de datos. Lo único que se debe señalar aquí fue que, dado que Cloud Runs no tiene una dirección IPv4 estática para ejecutarse, la base de datos se tuvo que configurar para permitir conexiones desde cualquier lugar (se tuvo que agregar una conexión autorizada desde 0.0.0.0/0), que es inseguro. Hasta que el amable equipo de desarrollo de dart descubra cómo usar los sockets UNIX, esta parece ser la única forma de hacerlo funcionar.

over 4 years ago · Santiago Trujillo Relatório

0

Al no haber probado esto yo mismo, de acuerdo con el código fuente del paquete postgres , debe especificar que desea un socket Unix:

 connection = PostgreSQLConnection( ... isUnixSocket: true, // <-- here );

El valor predeterminado es false .

El host que aprueba también debe ser válido. Los documentos dicen:

[host] debe ser un nombre de host, por ejemplo, "foobar.com" o una dirección IP. No incluye esquema ni puerto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda