我正在使用Google的和Cloud。它们都在同一个项目中,这应该足以建立到SQL的连接。
如果App应用程序与Cloud实例位于同一个项目中,则可以跳过本节并开始设置本地环境。否则,继续下一步。
如果我在我的Mac上旋转Node.js,在本地-它可以很容易地连接到Cloud,因为我的IP地址是白色的。
一旦我将它部署到App,它就无法工作,因为它无法连接到DB。我正在为Cloud使用公共IP地址。
我读了很多教程,也读过Google提供的文档。我可以看到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 }有什么建议,怎么解决?如果我将socketPath从db_config中移除,那么它在本地工作--但在部署它时不起作用。
发布于 2018-07-08 08:22:15
好的,当应用localhost和socketPath时,似乎会导致错误。没有Knex,一切都很好,下面的db_config用于mysql。
db_config = {
user: 'root',
password: 'PASSWORD!',
database: 'DB_NAME',
socketPath: '/cloudsql/CONNECTION_NAME'
};最后,请记住将cloud_sql_instance添加到app.yaml
beta_settings:
cloud_sql_instances: CONNECTION_NAMEhttps://stackoverflow.com/questions/51222821
复制相似问题