Я создал API-интерфейс Node.js, который подключается к базе данных MySQL. Я использую node-mysql2 в качестве драйвера. API и база данных работают в отдельном контейнере Docker. В какой-то момент после развертывания в кластере Kubernetes я получаю следующую ошибку:
Error: Can't add new command when connection is in closed state
at PromiseConnection.query (/usr/src/app/node_modules/mysql2/promise.js:92:22)
Интересно, почему эта ошибка происходит и как ее перехватить и обработать с помощью Node.js. Вот фрагменты кода моего Node.js API:
const mysql = require('mysql2/promise')
...
async function main() {
try {
const client = await mysql.createConnection({
host: DATABASE_HOST,
port: DATABASE_PORT,
user: DATABASE_USERNAME,
password: DATABASE_PASSWORD,
database: DATABASE_NAME
})
client.on('error', error => {
process.stderr.write(`${error.code}\n`) // PROTOCOL_CONNECTION_LOST
process.stderr.write(`An error occurred while connecting to the db: ${error.message}\n`)
process.exit(1)
})
} catch (error) {
process.stderr.write(`Error while creating db connection: ${error.code}\n`)
}
...
}
...
main().catch(err => {
process.stderr.write(`Error message: ${err.message}\n`)
process.exit(1)
})
У вас есть идея, как справиться с этой ошибкой?