简体   繁体   中英

Cloud SQL instance not connecting via Cloud Run

I am trying to connect to an CloudSQL instance via Cloud Run but whenever I send a POST request the logs for the cloud run instance report:

Cloud SQL instance "INSTANCE_NAME" is not reachable. Deploy a new revision adding the Cloud SQL connection. See documentation: https://cloud.google.com/sql/docs/mysql/connect-run

and followed by

Error: connect ENOENT /cloudsql/INSTANCE_NAME at Query._callback (/app/index.js:65:35)

I have followed the documentation and added a public ip connection to my Cloud SQL instance as 0.0.0.0/0 and I added an sql connection to the instance via cloud console update command.

连接

I have also added SQL Admin and SQL Client permissions to all my service accounts and enabled the SQL Admin extension.

When I run my code locally via TCP and I am able to send a POST request as well.

if (process.env.NODE_ENV == "production") {
  const dbSocketPath = process.env.DB_SOCKET_PATH || "/cloudsql";

  pool = mysql.createPool({
    user: process.env.DB_USER,
    password: process.env.DB_PASS,
    database: process.env.DB_NAME,
    //      host:<instance-public-ip> //<- works locally
    //      port:3306
    socketPath: `${dbSocketPath}/${process.env.INSTANCE_CONNECTION_NAME}`,
  });
}

I am all out of ideas, I think the socketpath /cloudsql/ does not exist. Is there a way I can check if it exists?

As stated in the comment by @USER149372, this issue could be resolved by:

delete the instance and service and create a new service with the SQL connection on creation.

This after ensured that the correct instance connection name is used whith the following format (as pointed out by @ kurtisvg)

project:region:instance

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM