# Ecto connection error with gcloud postgres instance

**URL:** <https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310>\
**Category:** Questions\
**Tags:** ecto, phoenix, google-cloud\
**Created:** [March 3, 2023, 1:00pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310 "2023-03-03T13:00:58Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 3, 2023, 1:00pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/1 "2023-03-03T13:00:58Z")

</div>

I am trying to connect to a gcloud postgres instance from my application  
this the config

```elixir
config :hello, Hello.Repo,
  username: System.get_env("POSTGRES_USER", "postgres"),
  password: System.get_env("POSTGRES_PASSWORD", "postgres"),
  database: "hello_dev",
  hostname: "/cloudsql/<project_name>:<region>:<instance_name>,
  pool_size: 10

```

but getting error `non-existing domain`  
I tried to use `socket` in place of `hostname` but it’s not working

Thanks for the help.

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 3, 2023, 1:51pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/2 "2023-03-03T13:51:50Z")

</div>

Well, what you specified as a hostname does not indeed look like a valid one.

Try `ping '/cloudsql/<project_name>:<region>:<instance_name>'` in your terminal.

Also you have a syntax error – at least here in the forum post, maybe not inside your config file – where you are missing a closing `"` after the supposed hostname.

---

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 3, 2023, 2:23pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/3 "2023-03-03T14:23:14Z")

</div>

the ping didn’t work. I tried to use external\_ip instead of the instance name string. But getting connection timeout.  
When I run cloud SQL proxy in local, can connect using localhost but I am looking for a way to connect without proxy

And the error was in the forum only.

---

<div class="post-metadata">

**Author:** ![BradS2S](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brads2s/32/33246_2.png) [@BradS2S](https://forum.elixirforum.com/u/BradS2S)\
**Post date:** [March 3, 2023, 2:40pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/4 "2023-03-03T14:40:57Z")

</div>

Is your app and you db on the same instance? You probably want to try to internal IP in that case assuming they are at different addresses.

---

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 3, 2023, 3:04pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/5 "2023-03-03T15:04:09Z")

</div>

My db is runing on google cloud and i am deploying my application to google cloud run.  
Now I have only external IP enbaled that can be used with cloud sql proxy.  
So the right question would be how to connect the app in cloud run to the db instance with external IP

---

<div class="post-metadata">

**Author:** ![BradS2S](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brads2s/32/33246_2.png) [@BradS2S](https://forum.elixirforum.com/u/BradS2S)\
**Post date:** [March 3, 2023, 3:25pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/6 "2023-03-03T15:25:12Z")

</div>

There’s a whole library that they provide to make that connect in Python, go and Java. Honestly I think your best bet is to enable an internal IP, put them on the same box (localhost) or use the external IP and figure out how to use the Unix socket option.

---

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 4, 2023, 4:12pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/7 "2023-03-04T16:12:36Z")

</div>

I tried to use the private IP using VPC connector. But getting the same connection error  
followed this article [connect to cloud sql](https://towardsdatascience.com/how-to-connect-to-gcp-cloud-sql-instances-in-cloud-run-servies-1e60a908e8f2)

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 4, 2023, 5:56pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/8 "2023-03-04T17:56:25Z")

</div>

> [@rathoud96](#):
>
> ` hostname: "/cloudsql/<project_name>:<region>:<instance_name>,`

Upon reading this again I realized I forgot to tell you that you should try to replace `hostname` with `socket_dir`.

…Though judging by [that Postgrex PR](https://github.com/elixir-ecto/postgrex/pull/604/files) – by @hauleth – it seems that `hostname` should work as well. Or I am reading it wrong, maybe the hostname support is only through specifying the `PGHOST` variable, not necessarily the `hostname` config key.

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 4, 2023, 5:59pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/9 "2023-03-04T17:59:58Z")

</div>

One reference to a past thread: [mix ecto.create and passwordless postgres - #2 by thomas.fortes](https://forum.elixirforum.com/t/mix-ecto-create-and-passwordless-postgres/47452/2)

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 4, 2023, 6:01pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/10 "2023-03-04T18:01:50Z")

</div>

Another person on the forum also pasted a CloudSQL config here: [Preparing the production environment for deployment in GCP with Cloud SQL database](https://forum.elixirforum.com/t/preparing-the-production-environment-for-deployment-in-gcp-with-cloud-sql-database/45476)

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 4, 2023, 6:03pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/11 "2023-03-04T18:03:21Z")

</div>

…and another one: [Ecto high database time with Cloud SQL - #3 by zatae](https://forum.elixirforum.com/t/ecto-high-database-time-with-cloud-sql/47052/3)

---

<div class="post-metadata">

**Author:** ![dimitarvp](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/32/38664_2.png) [@dimitarvp](https://forum.elixirforum.com/u/dimitarvp)\
**Post date:** [March 4, 2023, 6:04pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/12 "2023-03-04T18:04:24Z")

</div>

…and one more because why not :003:

> [@Ecto postgrex and unix sockets for Phoenix](https://forum.elixirforum.com/t/ecto-postgrex-and-unix-sockets-for-phoenix/17176/3):
>
> This code suggests that the directory is all you need:

---

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 6, 2023, 6:57pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/13 "2023-03-06T18:57:35Z")

</div>

Thank you for all the thread links.  
I tried to use `socket_dir: "/cloudsql/<project_name>:<region>:<instance_name>` in config.  
But i am getting db connection error `failed to connect: ** (DBConnection.ConnectionError) tcp connect (/cloudsql/<project_name>:<region>:<instance_name>/.s.PGSQL:5432): no such file or directory`

Not sure what am i doing wrong here?

---

<div class="post-metadata">

**Author:** ![rathoud96](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/rathoud96/32/26154_2.png) [@rathoud96](https://forum.elixirforum.com/u/rathoud96)\
**Post date:** [March 12, 2023, 4:48pm UTC](https://forum.elixirforum.com/t/ecto-connection-error-with-gcloud-postgres-instance/54310/14 "2023-03-12T16:48:22Z")

</div>

I was able to fix the issue by adding `cloud sql connection instance in my terraform config.

```elixir
metadata {
   annotations = {
      "run.googleapis.com/cloudsql-instances" = google_sql_database_instance.postgres_instance.connection_name
      ...
   }
}

And in the direct deployment from gcloud console, my service account was different so i was missing the permissions to connect to cloud sql.

```
