我在将 GCP cloud sql 与 GCP App Engine 连接时遇到错误。它在本地使用谷歌身份验证代理工作正常,但是当使用gcloud应用程序部署部署应用程序时,以及成功部署后在服务器上出现错误
Error: connect ETIMEDOUT at Connection._handleTimeoutError (/layers/google.nodejs.yarn/yarn_modules/node_modules/mysql2/lib/connection.js:205:17) at listOnTimeout (node:internal/timers:569:17) at process.processTimers (node:internal/timers:512:7)
{
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true
},
在下面的代码中出现上述错误
const Sequilize = require("sequelize").Sequelize;
const dotenv = require("dotenv");
dotenv.config();
const sequilize = new Sequilize(
process.env.DB_NAME,
process.env.DB_USER,
process.env.DB_PASSWORD,
{
host: process.env.DB_HOST, //db host public ip
dialect: "mysql",
socketPath: process.env.INSTANCE_CONNECTION, //`/cloudsql/INSTANCE_CONNECTION_NAME`,
}
);
module.exports = { sequilize };
app.yml 代码
runtime: nodejs
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "18"
beta_settings:
cloud_sql_instances: /cloudsql/INSTANCE_CONNECTION_NAME
App Engine 使用远程 Cloud SQL 数据库创建本地隧道。因此,主机必须是127.0.0.1。