【问题标题】:Google Cloud SQL connection in NodeJS app (Express) --> Error: connect ENOENTNodeJS 应用程序中的 Google Cloud SQL 连接(Express)--> 错误:连接 ENOENT
【发布时间】:2020-01-03 20:31:57
【问题描述】:

我试图在 Google Cloud 服务上部署我的 NodeJS 应用程序并在我尝试使用 Postman 通过 localhost/8080 调用数据库查询时出现以下错误,这是我的服务器正在侦听的位置:connect ENOENT /cloudsql/<MY_CONNECTION_NAME>。这是我的数据库连接文件,config.js


const mysql = require('mysql');
const dotenv = require('dotenv');

dotenv.config();

const {
  DB_PASS,
  DB_USER,
  DB_NAME,
} = process.env;

const config = {
  user: DB_USER,
  password: DB_PASS,
  database: DB_NAME,
  socketPath: `/cloudsql/${process.env.CLOUD_SQL_CONNECTION_NAME}`,
};

const connection = mysql.createConnection(config);

// create connection
connection.connect((err) => {
  if (err) throw err;
  console.log(`Connected to database ${DB_NAME}`);
});

module.exports.connection = connection;

我知道 Google 建议使用池进行连接,但我担心这样做需要我重写所有数据库查询,而且我的截止日期很紧。

我已经能够使用终端成功地使用 MYSQL 进入数据库。

【问题讨论】:

  • 您的 CloudSQL 实例中是否启用了公共 IP?您使用的是灵活的还是标准的 App Engine?

标签: mysql sql node.js google-app-engine google-cloud-sql


【解决方案1】:

查看Connecting to App Engine 页面。特别是,如果套接字不存在,您应该检查以下几点:

  1. 对于 GAE Flex,请确保您的 app.yaml 中有以下内容:
beta_settings:
  cloud_sql_instances: <INSTANCE_CONNECTION_NAME>
  1. 确保已启用 SQL Admin API 并确保您拥有正确的 IAM 权限 (Cloud SQL Client1 or higher) on your service account (service-PROJECT_NUMBER@gae-api-prod.google.com.iam.gserviceaccount.com`)。如果在项目之间,请确保您有

  2. 确保您正确拼写 &lt;INSTANCE_CONNECTION_NAME&gt;。它的格式应为&lt;PROJECT&gt;:&lt;REGION&gt;:&lt;INSTANCE&gt; - 您可以从您的实例的“实例详细信息”页面中完全复制它。

此外,使用连接池不会影响您的查询。使用池仅意味着当您“打开”一个连接时,它实际上是在重用现有连接,而当您“关闭”一个连接时,它会将其放回池中以供您的应用程序在其他地方使用。您使用池执行的查询应该完全相同。

【讨论】:

    【解决方案2】:

    如果您在 app.yaml 中使用 flex 作为 env 运行而不会出现错误,则会发生这种情况,从您的 app.yaml 中删除 env:flex, 你的 app.yaml 需要看起来像这样 app.yaml

    你将成功连接到云sql而不会导致错误 console log

    【讨论】:

    • 请将代码和数据添加为文本 (using code formatting),而不是图像。图片:A)不允许我们复制粘贴代码/错误/数据进行测试; B) 不允许根据代码/错误/数据内容进行搜索;和many more reasons。除了代码格式的文本之外,只有在图像添加了一些重要的东西,而不仅仅是文本代码/错误/数据传达的内容时,才应该使用图像。
    猜你喜欢
    • 1970-01-01
    • 2022-01-27
    • 2023-03-14
    • 1970-01-01
    • 2018-10-30
    • 2017-06-17
    • 2021-08-01
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多