AppEngine 和 Cloud SQL 连接错误



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

如果您的 App Engine 应用与云位于同一项目中 SQL 实例,您可以跳过此部分并转到设置您的 当地环境。否则,请继续执行下一步。

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

一旦我将其部署到 App Engine,它就无法正常工作,因为它无法连接到数据库。我正在使用云 SQL 的公共 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,那么它在本地工作 - 但在部署时不行。

好的,当应用本地主机和套接字路径时,似乎会导致错误。没有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

相关内容

  • 没有找到相关文章

最新更新