Иногда эта ошибка возникает случайно в моем проекте nodejs,mysql, который размещен в службе приложений Azure. Из-за этого моя служба приложений отключается много раз в день, тогда как мой промежуточный сервер приложений все еще работает и подключен к той же базе данных, я использую пакет mysql2 для подключения к базе данных mysql. Я использую пул соединений для подключения к базе данных MySQL. Иногда я получаю эту ошибку случайно. Я не могу выяснить причину этой ошибки. Может ли кто-нибудь мне помочь с этим?
/home/site/wwwroot/node_modules/mysql2/lib/connection.js:205
const err = new Error('connect ETIMEDOUT');
^
Error: connect ETIMEDOUT
at PoolConnection._handleTimeoutError (/home/site/wwwroot/node_modules/mysql2/lib/connection.js:205:17)
at listOnTimeout (node:internal/timers:573:17)
at process.processTimers (node:internal/timers:514:7) {
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true
}
Ниже приведен код подключения к базе данных для mysql2.
const mysql = require("mysql2");
require("dotenv").config();
const CONNECTION_LIMIT = process.env.CONNECTION_LIMIT;
const IDLE_TIMEOUT = process.env.IDLE_TIMEOUT;
const MAX_IDLE = process.env.MAX_IDLE;
function createCentralPool(credentials, options) {
try {
let { removeDatabase } = options || {};
let dbinfo = {
host: process.env.DEFAULT_DB_HOST,
user: process.env.DEFAULT_DB_USER,
password: process.env.DEFAULT_DB_PASSWORD,
database: process.env.DEFAULT_DB_DATABASE,
port: process.env.DEFAULT_DB_PORT,
connectionLimit: CONNECTION_LIMIT,
idleTimeout: IDLE_TIMEOUT,
maxIdle: MAX_IDLE,
charset: "utf8mb4",
dateStrings: true,
...credentials,
};
if (removeDatabase) delete dbinfo.database;
const pool = mysql.createPool({
...dbinfo,
enableKeepAlive: true,
});
const promisePool = pool.promise();
return promisePool;
} catch (error) {
console.log(error, "createCentralPool");
}
}
function createPoolForUserDatabase(credentials) {
try {
let dbInfo = {
host: process.env.DEFAULT_DB_HOST,
user: process.env.DEFAULT_DB_USER,
password: process.env.DEFAULT_DB_PASSWORD,
// database: process.env.DEFAULT_DB_DATABASE,
port: process.env.DEFAULT_DB_PORT,
connectionLimit: CONNECTION_LIMIT,
idleTimeout: IDLE_TIMEOUT,
maxIdle: MAX_IDLE,
charset: "utf8mb4",
dateStrings: true,
...credentials,
};
const pool = mysql.createPool({ ...dbInfo });
// Log connection events
// logPoolEvents(pool);
const promisePool = pool.promise();
return promisePool;
} catch (error) {
console.log(error, "createPoolForUserDatabase");
}
}
const centralDbPool = createCentralPool();
const userDbPools = new Map();
function getUserDbPool(_credentials) {
let credentials = { ..._credentials };
delete credentials?.details;
try {
const { database } = credentials || {};
let userDbPool = userDbPools.get(database);
if (!userDbPool) {
userDbPool = createPoolForUserDatabase(credentials);
userDbPools.set(database, userDbPool);
}
return userDbPool;
} catch (error) {
console.log(error);
throw new Error(error);
}
}
module.exports = {
centralDbPool,
createCentralPool,
getUserDbPool,
};
Подробнее здесь: https://stackoverflow.com/questions/793 ... -causing-t
Получение «connect ETIMEDOUT» в моем nodejs, проект mysql2 регистрируется случайным образом, что приводит к отключению ⇐ MySql
Форум по Mysql
1737469726
Anonymous
Иногда эта ошибка возникает случайно в моем проекте nodejs,mysql, который размещен в службе приложений Azure. Из-за этого моя служба приложений отключается много раз в день, тогда как мой промежуточный сервер приложений все еще работает и подключен к той же базе данных, я использую пакет mysql2 для подключения к базе данных mysql. Я использую пул соединений для подключения к базе данных MySQL. Иногда я получаю эту ошибку случайно. Я не могу выяснить причину этой ошибки. Может ли кто-нибудь мне помочь с этим?
/home/site/wwwroot/node_modules/mysql2/lib/connection.js:205
const err = new Error('connect ETIMEDOUT');
^
Error: connect ETIMEDOUT
at PoolConnection._handleTimeoutError (/home/site/wwwroot/node_modules/mysql2/lib/connection.js:205:17)
at listOnTimeout (node:internal/timers:573:17)
at process.processTimers (node:internal/timers:514:7) {
errorno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
fatal: true
}
Ниже приведен код подключения к базе данных для mysql2.
const mysql = require("mysql2");
require("dotenv").config();
const CONNECTION_LIMIT = process.env.CONNECTION_LIMIT;
const IDLE_TIMEOUT = process.env.IDLE_TIMEOUT;
const MAX_IDLE = process.env.MAX_IDLE;
function createCentralPool(credentials, options) {
try {
let { removeDatabase } = options || {};
let dbinfo = {
host: process.env.DEFAULT_DB_HOST,
user: process.env.DEFAULT_DB_USER,
password: process.env.DEFAULT_DB_PASSWORD,
database: process.env.DEFAULT_DB_DATABASE,
port: process.env.DEFAULT_DB_PORT,
connectionLimit: CONNECTION_LIMIT,
idleTimeout: IDLE_TIMEOUT,
maxIdle: MAX_IDLE,
charset: "utf8mb4",
dateStrings: true,
...credentials,
};
if (removeDatabase) delete dbinfo.database;
const pool = mysql.createPool({
...dbinfo,
enableKeepAlive: true,
});
const promisePool = pool.promise();
return promisePool;
} catch (error) {
console.log(error, "createCentralPool");
}
}
function createPoolForUserDatabase(credentials) {
try {
let dbInfo = {
host: process.env.DEFAULT_DB_HOST,
user: process.env.DEFAULT_DB_USER,
password: process.env.DEFAULT_DB_PASSWORD,
// database: process.env.DEFAULT_DB_DATABASE,
port: process.env.DEFAULT_DB_PORT,
connectionLimit: CONNECTION_LIMIT,
idleTimeout: IDLE_TIMEOUT,
maxIdle: MAX_IDLE,
charset: "utf8mb4",
dateStrings: true,
...credentials,
};
const pool = mysql.createPool({ ...dbInfo });
// Log connection events
// logPoolEvents(pool);
const promisePool = pool.promise();
return promisePool;
} catch (error) {
console.log(error, "createPoolForUserDatabase");
}
}
const centralDbPool = createCentralPool();
const userDbPools = new Map();
function getUserDbPool(_credentials) {
let credentials = { ..._credentials };
delete credentials?.details;
try {
const { database } = credentials || {};
let userDbPool = userDbPools.get(database);
if (!userDbPool) {
userDbPool = createPoolForUserDatabase(credentials);
userDbPools.set(database, userDbPool);
}
return userDbPool;
} catch (error) {
console.log(error);
throw new Error(error);
}
}
module.exports = {
centralDbPool,
createCentralPool,
getUserDbPool,
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79374793/getting-connect-etimedout-in-my-nodejs-mysql2-project-logs-randomly-causing-t[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия