Уважаемые stackoverflowers:)
Я делаю свое первое mvc приложение на node.js и у меня возникает такая проблема:
Иногда, когда я не выполняю никаких запросов к базе данных в течение длительного времени ( около 3 минут) и попробуйте сделать одно, у меня появляется такая ошибка: «Этот сокет был завершен другой стороной»
Я обнаружил, что это из-за опции wait_timeout в конфигурации mysql, которая закрывает соединение если время простоя больше, чем значение
Так я прав, что перед каждым запросом к базе данных я должен проверять соединение на наличие открытых? И если я должен, как и где?
Это мой файл подключения БД:
const mysql = require('mysql2');
// create the connection to database
const connection = mysql.createConnection({
host: 'localhost',
user: 'mysql',
password: 'mysql',
database: 'qa'
});
exports.connect = (done) => {
connection.connect((err) =>{
if(err){
console.log('db connection error');
}
else{
done()
}
})
}
exports.connection = connection;
И это часть одной из моих моделей:
const db = require('../db');
exports.makeNewQuestion = async (topic, text, subsection, user) => {
return db.connection.promise().execute("INSERT INTO `questions` (`topic`, `text`,
`subsection_id`, `user_id`) VALUES (?, ?, ?, ?)", [topic, text, subsection, user]);
}