部署的Bookshelf教程应用程序(App Engine / NodeJS)的CloudSQL连接问题

时间:2018-03-26 07:09:13

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

我使用节点js(flex环境)在app引擎上部署了我的代码。

config.json

{
  "GCLOUD_PROJECT": "XXXXXX",
  "DATA_BACKEND": "cloudsql",
  "MYSQL_USER": "XXXX",
  "MYSQL_PASSWORD": "XXXXX",
  "INSTANCE_CONNECTION_NAME": "XXXXXX:us-central1:XXXXX"
}

模型cloudsql.js

const options = {
  user: config.get('MYSQL_USER'),
  password: config.get('MYSQL_PASSWORD'),
  database: 'XXXXX'
};

if (config.get('INSTANCE_CONNECTION_NAME') && config.get('NODE_ENV') === 'production') {
  options.socketPath = `/cloudsql/${config.get('INSTANCE_CONNECTION_NAME')}`;
}
const connection = mysql.createConnection(options);

我收到以下错误:

  

“致命错误后无法将查询排入队列。”

请提供任何反馈。

1 个答案:

答案 0 :(得分:0)

当您尝试查询在创建期间遇到致命错误的连接时,似乎发生错误"Cannot enqueue Query after fatal error."。如果我们查看mysqljs documentation,则建议您使用以下内容进行连接:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});

如您所见,您需要传递一个回调函数来处理尝试连接时可能出现的任何错误。此回调函数将打印遇到的错误,以便为您提供有关无法连接的原因的更多信息。

此外,您可能对this处理错误的部分感兴趣。