【问题标题】:x-devapi unable to connect to database in Google app-enginex-devapi 无法连接到 Google 应用引擎中的数据库
【发布时间】:2018-12-10 03:15:00
【问题描述】:

我正在向 App-engine 部署一个简单的 nodejs 服务器,除了使用 X-devapi 的数据库连接外,它运行良好。我收到此错误:

All routers failed.

这是我使用的代码:

'use strict';

const express = require('express');
const mysqlx = require('@mysql/xdevapi');

const app = express();
app.get('/', (req, res) => {
  const options = { user: 'user_name', password: '@pass',host: 'XX.XXX.XX.XXX'
/*Here I used Public IP address on the of the SQL instance*/,port: XXXX
/*I assigned port 8080 here*/, schema: 'db_name' };

(async function () {
  let session;

  try {
    session = await mysqlx.getSession(options);

    const collection = await session.getSchema(options.schema).createCollection('collection');
    await collection.add({ name: 'foo' }).execute();
    await collection.find().fields('name').execute(console.log); // { name: 'foo' }
  } catch (err) {
    //console.error(err.message);
    res.status(200).send(err.message).end();//used code 200 in order to receive the error too
  } finally {
    session && session.close();
  }
})();
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

我该如何解决这个问题?

【问题讨论】:

  • 该错误基本上意味着无法访问服务器。因此,用于创建会话的主机或端口属性中的一个或两个与 MySQL 服务器实例不匹配。另外,我假设您以某种方式在不同主机的端口 8080 上运行 MySQL(可能使用--port=8080)。我对谷歌应用引擎不熟悉,你能有那种控制吗?如果没有,可能需要使用默认的 X 协议端口(33060),当然,如果可用的 MySQL 版本确实支持 X 协议。
  • 你是对的,请检查下面发布的答案,来自 Google 支持
  • 这个错误需要更清楚,因为我在放弃并搜索谷歌之前与这个问题斗争了一个小时。最初定位异常的来源确实很棘手,因为堆栈跟踪没有显示调用 getSession 的位置。

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


【解决方案1】:

如果您查看对我的关注here 的回复和功能请求here 的回复,Google 云 SQL 工具仍然没有启用X devAPI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2019-08-07
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多