У меня не получается подключиться к облаку SQL из моего приложения Node-JS, размещенного на App-Engine, при развертывании через gcloud app deploy
После развертывания выдается ошибка Error: connect ENOENT /cloudsql/<INSTANCE_CONNECTION_NAME> at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1106:14)
var config = {
user: 'my_username',
database: 'test_db',
password: 'example_pass'
};
if (process.env.DB_INSTANCE_NAME && process.env.NODE_ENV === 'production') {
// Executing remotely
config.socketPath = "/cloudsql/<INSTANCE_CONNECTION_NAME>"
} else {
// Local development - add IP address to SQL access
config.host = 'XX.XX.XXX.XX';
}
let pool;
const createPool = async () => {
pool = await mysql.createPool(config);
pool.query('SELECT * FROM test_db.test_table', function (error, results, fields) {
if (error) throw error;
console.log('The result is: ', results);
});
};
createPool();
Мой app.yaml выглядит следующим образом:
# [START app_yaml]
runtime: nodejs
beta_settings:
cloud_sql_instances: <INSTANCE_CONNECTION_NAME>
env: flex
# [END app_yaml]
App Engine и облако SQL db находятся в одном проекте. Я много раз проходил через шаги, перечисленные здесь: https://cloud.google.com/sql/docs/mysql/connect-app-engine
Я могу подключиться локально, добавив белый ip-адрес во вкладку SQL Подключения без проблем.