Search code examples
mysqlnode.jsgoogle-app-enginegoogle-cloud-platformmysqljs

x-devapi unable to connect to database in Google app-engine


I am deploying a simple nodejs server to App-engine which works well except for the database connection using the X-devapi. I am getting this error:

All routers failed.

Here is the code I use:

'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.');
});

How can I solve this?


Solution

  • It turns out that Google cloud SQL tools still do not have the X devAPI enabled if you check response to my concern here and the feature request here