Как проверить, готова ли база данных MySQL для некоторых запросов из узла MySQL Пул соединений?
У меня есть среда Docker, состоящая из трех контейнеров:
- контейнер 1: веб-сервер
- контейнер 2: api
- контейнер 3: база данных
Контейнер базы данных работает с базой данных MySQL. Контейнер API соединяется с этой базой данных. Все три контейнера запускаются одновременно. Контейнер веб-сервера работает через 0,5 с. Контейнер API работает через 2 с. Сервер базы данных работает через 20 с.
В настоящее время API пытается получить доступ к таблицам базы данных, прежде чем база данных будет запущена и запущена. Это приводит к ошибкам типа Отказано в соединении . Следующий сегмент кода всегда заканчивается сообщением «Ошибка запроса базы данных!» когда база данных MySQL еще не запущена:
const sql: string = 'SELECT * FROM sometable;';
MySQL.createPool({
connectionLimit: 10,
acquireTimeout: 30000,
waitForConnections: true,
database: 'mydatabase',
host: 'localhost',
multipleStatements: true,
password: 'mypassword',
user: 'root',
}).query(sql, (err, result) => {
if (result) {
console.log('Successfully queried database.');
} else {
console.log('Error querying database!');
}
});
Используемые версии:
OS: Ubuntu 19.10
Node: v13.6.0
MySQL (Node API): "@types/mysql": "2.15.8" and "mysql": "2.17.1"
MySQL (Docker Database): mysql:5.7.28
TypeScript: 3.7.4
Я хотел бы проверить (и подождать) готовность базы данных из API, возможно, используя пул соединений, который я использую для запросов. Это возможно?