0
votes

First of all I find google's cloud docs lacking and somewhat incorrect a fair bit of the time.

I am attempting to connect from a cloud function to a cloud sql database and I have having endless issues.

Here is the connection error

"Internal error looking up Cloud SQL instance "project:region:database/.s.PGS""
Error: connect ENOENT /cloudsql/project:region:database/.s.PGSQL.5432

I am able to connect to said database locally with the public ip address and code is all working fine, but when deployed it doesn't work at all.

What I have...

Project A - This has the database in australia-souteast1 region.
Project B - This has all the other logic, also in australia-southeast1

(the database is legacy, hence why its in a different project).

I have a cloud schedule task that triggers a pubsub, which inturn triggers the cloud function. This process works, and is logging what it should, this is also where I am seeing the can't connect error.

Connection host is /cloudsql/projectId:region:database (coppied from the cloud sql connection page, so I know that isn't the issue).

I have also enabled Cloud Sql API and Cloud Sql Admin Api on both Project A and Project B and still no luck.

I have also tried with the default service account by adding the Cloud Sql Client permission in Project B and then adding Project B's default service account into Project A with Cloud Sql Client permissions.

Failing that, I then created a new service account in Project B and gave it Owner permissions and then added that user to Project A with Owner permissions also, I am still getting this error.

I really have no clue now as to what is going on.

We have app engines on Project B connecting to Project A without any issues, I am really confused.

Here is the stack driver error Stack Driver Error

And my be connection details via an .env file enter image description here


UPDATE:

Changing the database to a different database instance in Project A seems to connect, so it is looking like it is possibly a problem with the database instance.

Database 1 is working and I can connect to.
Database 2 is the one that I can not get to work. Database 2 is a clone of Database 1

1

1 Answers

1
votes

In this case, the docs are absolutely correct, but you are using the wrong filepath. The unix socket is located at /cloudsql/project:region:database/.s.PGSQL.5432, not /cloudsql/project:region:database/.s.PGS/.s.PGSQL.5432.