gpt4 book ai didi

mysql - AppEngine 和 Cloud SQL 连接错误

转载 作者:行者123 更新时间:2023-11-29 02:11:30 25 4
gpt4 key购买 nike

我正在使用来自 Google Cloud 的 App Engine 和 Cloud SQL。它们都在同一个项目中,这应该足以与 SQL 建立连接。

If your App Engine application is in the same project as your Cloud SQL instance, you can skip this section and go to Setting up your local environment. Otherwise, proceed to the next step.

如果我在我的 Mac 上本地启动 Node.js - 它可以轻松连接到 Cloud SQL,因为我的 IP 地址已列入白名单。

一旦我将它部署到 App Engine,它就无法工作,因为它无法连接到数据库。我正在为 Cloud SQL 使用公共(public) IP 地址。

看了很多教程,也看了谷歌云提供的文档。我可以看到关于 socketPath 的内容。

但我不想使用 Knex。我想使用标准的 mysql。

我一直在尝试以下内容:

var db_config = {
host: 'PUBLIC IP',
user: 'root',
password: 'PASSWORD!',
database: 'DB_NAME',
socketPath: '/cloudsql/CONNECTION_NAME'
};

错误:

error when connecting to db: { Error: connect ENOENT /cloudsql/CONNECTION_NAME-209415:europe-west1:DB_NAME
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1174:14)
--------------------
at Protocol._enqueue (/Users/root/API/Node-API/node_modules/mysql/lib/protocol/Protocol.js:145:48)
at Protocol.handshake (/Users/root/API/Node-API/node_modules/mysql/lib/protocol/Protocol.js:52:23)
at Connection.connect (/Users/root/API/Node-API/node_modules/mysql/lib/Connection.js:130:18)
at handleDisconnect (/Users/root/API/Node-API/src/App.ts:44:14)
at Object.<anonymous> (/Users/root/API/Node-API/src/App.ts:60:1)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Module.m._compile (/Users/root/API/Node-API/node_modules/ts-node/src/index.ts:435:23)
at Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Object.require.extensions.(anonymous function) [as .ts] (/Users/root/API/Node-API/node_modules/ts-node/src/index.ts:438:12)
at Module.load (internal/modules/cjs/loader.js:566:32)
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'connect',
address: '/cloudsql/CONNECTION_NAME-209415:europe-west1:DB_NAME',
fatal: true }

任何建议,如何解决这个问题?如果我从 db_config 中删除 socketPath,那么它会在本地工作 - 但在部署时不会。

最佳答案

好的,似乎错误是在应用 localhost 和 socketPath 时引起的。在没有 Knex 的情况下一切正常,对于 mysql 使用以下 db_config

db_config = {
user: 'root',
password: 'PASSWORD!',
database: 'DB_NAME',
socketPath: '/cloudsql/CONNECTION_NAME'
};

最后记得在app.yaml中加入cloud_sql_instance

beta_settings:
cloud_sql_instances: CONNECTION_NAME

关于mysql - AppEngine 和 Cloud SQL 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51222821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com