skip to Main Content

I’m trying to connect to a public IP CloudSQL Postgres database from a cloud function with Prisma.
The database has SSL enforced. I assume I can use the Cloud Auth Proxy, and it works locally, but when I deploy it gives me an error.

I’ve tried both:

Option 1:

datasource db {
  provider = "postgresql"
  url = "postgresql://USER:PASSWORD@localhost:3307/DATABASE_NAME?host=CONNECTION_URL"
}

Got error:

Can't reach database server at `CONNECTION_URL`:`3307`

Option 2:

datasource db {
      provider = "postgresql"
      url = "postgresql://USER:PASSWORD@localhost/DATABASE_NAME?host=CONNECTION_URL"
    }

Got error:

Can't reach database server at `IP_ADDRESS`:`5432`

Where IP_ADDRESS is the correct public IP address for the database that I can see in the console

CONNECTION_URL is /cloudsql/PROJ:REGION:INSTANCE

2

Answers


  1. Chosen as BEST ANSWER

    Figure out I had the vpc connector enabled to all traffic, so all traffic was trying to go through the private VPC instead of the public IP. Disabling it fixed it.


  2. You application is trying to connect on "CONNECTION_URL" and "3307". To use public IP on Cloud Functions you should by connecting by unix socket: https://cloud.google.com/sql/docs/mysql/connect-functions#connect_to

    Based on this issue, it looks like your URL should be something like:

    postgresql://username@localhost/databasename?host=/cloudsql/CONNECTION_NAME
    

    Where your instance connection name is PROJ:REGION:INSTANCE.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search