Node.JS в Google App Работа с облаком SQLError: подключить ENOENT / cloudsql / - PullRequest
0 голосов
/ 20 ноября 2018

Я успешно развернул свое приложение в Google App Engine. Моя база данных запущена и работает на Cloud SQL. Я могу без проблем подключиться к базе данных с моей локальной машины, указав IP-адрес моей машины в авторизованных сетях в облачном SQL. Однако при развертывании в производство я получаю:

Error: connect ENOENT /cloudsql/<my project id>:asia-south1:<my database instance name>

Мой файл app.yaml выглядит так:

runtime: nodejs  
env: flex

manual_scaling:  
  instances: 1
resources:  
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

env_variables:
  ST_ENV: 'Production' //Used to set the app listening on the below port
  ST_PORT: '8080'
  SQL_USER: '<username>'
  SQL_PASSWORD: '<password>'
  SQL_DATABASE: '<databasename>'
  INSTANCE_CONNECTION_NAME: '/cloudsql/<my project id>:asia-south1:<my database instance name>'

  beta_settings:
  cloud_sql_instances: '<my project id>:asia-south1:<my database instance name>'

Мой конфигурационный файл выглядит так:

database: {             
            connectionLimit: 10,
            // host     : process.env.INSTANCE_CONNECTION_NAME,
            socketPath: process.env.INSTANCE_CONNECTION_NAME,
            user     : process.env.SQL_USER,  
            password : process.env.SQL_PASSWORD,  
            database : process.env.SQL_DATABASE,
            multipleStatements : true

        }

И я создаю пул соединений (я упростил код для этого примера):

var db = config.production.database;
var pool = mysql.createPool(db);

Мне удалось успешно подключиться с локального компьютера через локальный cloud_sql_proxy.

Я пытался использовать IP-адрес экземпляра Cloud SQL в качестве хоста, но это привело меня к ошибке ниже:

Error: connect ECONNREFUSED 127.0.0.1:3306'

Я также попытался указать хост как 0.0.0.0 и порт 3306 и получил:

Error: connect ECONNREFUSED 0.0.0.0:3306'

Редактировать: API Cloud SQL и API администратора Cloud SQL включены:

enter image description here

Это похоже на то, что при запуске в производство движок приложения пытается использовать несуществующий прокси. Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 26 ноября 2018

Ознакомьтесь с конкретными инструкциями для подключения из среды выполнения Node.js в App Engine Flexible . Вы можете настроить соединение, используя имя соединения экземпляра и некоторые другие переменные среды. Нет необходимости указывать имя хоста или устанавливать прокси-сервер SQL на вашем экземпляре. Попытка подключиться к общедоступному IP-адресу экземпляра Cloud SQL не будет работать из App Engine .

...