Невозможно подключиться к базе данных Cloud SQL из App Engine - Node JS - PullRequest
0 голосов
/ 10 февраля 2020

У меня не получается подключиться к облаку 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 Подключения без проблем.

1 Ответ

0 голосов
/ 11 февраля 2020

После удаления всего и повторного запуска у меня сегодня был некоторый успех. Я думаю, что проблема заключалась в попытке подключиться к экземпляру Cloud SQL первого поколения. После создания новой тестовой базы данных и локальной настройки доступа с помощью прокси-сервера Cloud Sql мне удается заставить это работать локально и в сборке App Engine. Спасибо за вашу помощь.

...