【问题标题】:CloudSQL connection issues with deployed Bookshelf tutorial app (App Engine/NodeJS)已部署 Bookshelf 教程应用 (App Engine/NodeJS) 的 CloudSQL 连接问题
【发布时间】:2018-09-04 06:16:54
【问题描述】:

我使用 node js(弹性环境)在应用引擎上部署了我的代码。

config.json

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

model-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);

我收到以下错误:

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

请提供任何反馈。

【问题讨论】:

  • 根据snakecharmerb的链接问题,这通常与不正确的连接管理有关。你能解决这个问题吗?您每次运行时都会收到此错误吗?
  • 是的,如果您有任何解决方案,请提供给我

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


【解决方案1】:

当您尝试查询在创建过程中遇到致命错误的连接时,似乎会出现错误 "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 处理错误部分感兴趣。

【讨论】:

  • 谢谢,但问题基于谷歌云(App Engine/NodeJS)
  • @DineshKumar 您的问题中描述的问题与 Google Cloud(或 App Engine)无关。您正在尝试对失败的连接执行操作 - 如果您想找出连接失败的原因,您需要按上述方式处理失败。
猜你喜欢
  • 2019-02-25
  • 2020-11-24
  • 2013-10-25
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多