Connecting to Cloud SQL from App Engine
Всем доброго дня Спасибо что читаете это. Я новичок в веб программирование. Прошу не пинать.
Борюсь с проблемой уже неделю. Задача в следующем. Есть проект на Node.js в Google Cloude Platform. Есть Cloud MySQL тоже в Google Cloude Platform. Все создано в рамках одного проекта Google Cloud Platform. Мне всего лишь нужно подключиться к базе данных облачной MySQL из проекта node.js созданным в App Engine, чтобы читать данные.
Прочитав инструкцию Connecting to Cloud SQL from App Engine ничего не понял. Вставил код из инструкции, вписав данные свой БД. Configuring App Engine = standart
const createPool = async () => {
pool = await mysql.createPool({
user: process.env.roor, // e.g. 'my-db-user'
password: process.env.MY_PASS, // e.g. 'my-db-password'
database: process.env.MY_DB, // e.g. 'my-database'
// If connecting via unix domain socket, specify the path
socketPath: `/cloudsql/process.env.abgs-262322:europe-west3:abgs`,
// If connecting via TCP, enter the IP and port instead
// host: 'localhost',
// port: 3306,
//...
});
};
createPool();
Добавил код с GitHub, который создает таблицу.
const ensureSchema = async () => {
// Wait for tables to be created (if they don't already exist).
await pool.query(
`CREATE TABLE IF NOT EXISTS votes
( vote_id SERIAL NOT NULL, time_cast timestamp NOT NULL,
candidate CHAR(6) NOT NULL, PRIMARY KEY (vote_id) );`
);
};
ensureSchema();
Запустил командой node MySQL2.js Итог:
переменная pool = undefined.
Тогда решил попробовать подключить через стандартную библиотеку.
В настройках панели облачной SQL можно найти все параметры для подключения к экземпляру.

Прописал настройки.
const mysql = require("mysql");
const connection = mysql.createConnection({
//host: "35.246.207.86",
host: "/cloudsql/abgs-262322:europe-west3:abgs",
//host: "127.0.0.1",
user: "******",
database: "abgs",
password: "*****"
});
connection.connect(function(err){
if (err) {
return console.error("Ошибка: " + err.message);
}
else{
console.log("Подключение к серверу MySQL успешно установлено");
}
});
И снова ошибка.
> Ошибка: getaddrinfo ENOTFOUND
Тогда я попробовал 3 вариант. Использовать библиотеку knex.
Создал код. Написал запрос.
var knex = require('knex')({
client: 'mysql',
connection: {
host : '35.246.207.86',
user : '******',
password : '*******',
database : 'abgs'
}
});
var a = knex('main_data').where('Квартал ', "СД20");
console.log(a);
Вывожу в консоль результат и получаю набор конфигурации, вместо результата запроса SQL

Я уже не знаю, какие еще способы испробовать. Ничего не работает.

