Cloud SQL 在从 Google Cloud App Engine 中部署的节点 js 应用程序查询时会抛出 E



我正在开发一个以云SQL为数据库的节点js应用程序。我在本地主机中开发了该应用程序,并部署到谷歌云应用引擎。在应用程序引擎中,我收到下面提到的错误。 注意:我已验证数据库凭据是否正确。尝试了许多方法,包括增加连接超时,但相同的错误仍然存在。

A { 错误:连接 ETIMEDOUT at Connection._handleConnectTimeout (/app/node_modules/mysql/lib/Connection.js:419:13) at Object.onceWrapper (events.js:313:30) at emitNone (events.js:106:13) at Socket.emit (events.js:208:7) 在Socket._onTimeout (净.js:407:8) 超时时(计时器.js:475:11) at tryOnTimeout (timers.js:310:5) at Timer.listOnTimeout (timers.js:270:5)

一个--------------------

A at Protocol._enqueue (/app/node_modules/mysql/lib/protocol/Protocol.js:145:48)

A at Protocol.handshake (/app/node_modules/mysql/lib/protocol/Protocol.js:52:23)

A at Connection.connect (/app/node_modules/mysql/lib/Connection.js:130:18)

A at Connection._implyConnect (/app/node_modules/mysql/lib/Connection.js:461:10)

A at Connection.query (/app/node_modules/mysql/lib/Connection.js:206:8)

a at 对象。(/app/code/nodejs/app.js:27:9)

A 在Module._compile(模块.js:643:30)

A 在 Object.Module._extensions..JS(模块.js:654:10)

A at Module.load (module.js:556:32)

A at tryModuleLoad (module.js:499:12)

错误没有:"ETIMEDOUT",

一个代码:"ETIMEDOUT",

系统调用:"连接",

致命的:真

}

socketPath应设置为"/cloudsql/{INSTANCE_CONNECTION_NAME}"来解决此问题(例如在本地机器中不需要socketPath即可工作)。无需设置主机。下面给出了示例代码片段

const knex = connect();
function connect () {
const config = {
user: process.env.SQL_USER,
password: process.env.SQL_PASSWORD,
database: process.env.SQL_DATABASE
};
if (process.env.INSTANCE_CONNECTION_NAME && process.env.NODE_ENV === 'production') {
config.socketPath = `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`;
}
// Connect to the database
const knex = Knex({
client: 'mysql',
connection: config
});
return knex;
}

参考: https://cloud.google.com/appengine/docs/flexible/nodejs/using-cloud-sql

其他注意事项:

1) 应启用云 SQL API

2)在app.yaml中,cloud_sql_instances应该beta_settings部分添加

beta_settings:
cloud_sql_instances: YOUR_INSTANCE_CONNECTION_NAME

如果未提供,它将在 PipeConnectWrap.afterConnect [作为完成] (net.js:1182:14) Object._errnoException (util.js:1022:11) 在 _exceptionWithHostPort (util.js:1044:20) 生成错误 (错误:连接 ENOENT instance_name 在 PipeConnectWrap.afterConnect [作为完成] (net:1182:14))

相关内容

  • 没有找到相关文章

最新更新