nodejs - соединение с базой данных
Работаю с сокетами, использую sicket.io, express, node.js и ещё нужно подключить mysql. Скачал плагин mysql через npm.
Подключил на страницу всё, вот так это всё выглядит:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "admin",
password: "admin123",
database: "admin"
});
con.connect(function(err) {
if (err) throw err;
con.query("SELECT * FROM users WHERE id = '1'", function (err, result) {
if (err) throw err;
console.log(result);
});
});
Запрос успешно выполняется, из базы данных пользователя мне показывает. Но после 10-25 секунд сервер выключается и вылезает вот такая ошибка:
events.js:183
throw er; // Unhandled 'error' event
^
Error: Connection lost: The server closed the connection.
at Protocol.end (/home/admin/web/ssd1.had.yt/public_html/node_modules/mysql/lib/protocol/Protocol.js:112:13)
at Socket.<anonymous> (/home/admin/web/ssd1.had.yt/public_html/node_modules/mysql/lib/Connection.js:94:28)
at Socket.<anonymous> (/home/admin/web/ssd1.had.yt/public_html/node_modules/mysql/lib/Connection.js:526:10)
at emitNone (events.js:111:20)
at Socket.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickCallback (internal/process/next_tick.js:181:9)
Искал в интернете решение, понял что соединение с базой данных надо закрывать.
Добавил вот эту строчку:
con.end();
И теперь при закрытие соединения с базой данных у меня выключается сервер, подскажите, может есть какой нибудь вариант?
Ответы (1 шт):
Ещё раз здравствуйте, разобрался со своей проблемой. Мне помогло следующее:
Я подключил модуль mysql2 Скачивается он вот так:
npm install --save mysql2Соединение выполняю с помощью плагина pool Вот так:
const pool = mysql.createPool({
host: 'localhost',
user: 'admin',
database: 'admin',
password: 'admin123!',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
И собственно сам запрос:
$id_db = data.id_bd;
pool.query('SELECT * FROM users WHERE id = ' +$id_db, function(err, rows) {
console.log(rows);
pool.end();
})
Такой способ мне подошел как под версию базы данных 5.7 так и 8+