Я успешно развернул свое приложение в 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 включены:
Это похоже на то, что при запуске в производство движок приложения пытается использовать несуществующий прокси. Кто-нибудь может помочь?