mark_edinoroglove
@mark_edinoroglove

Как исправить ошибку?

Здравствуйте! помогите пожалуйста, как можно исправить эту ошибку..
node:events:342
      throw er; // Unhandled 'error' event
      ^

Error: Connection lost: The server closed the connection.
    at Protocol.end (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\protocol\Protocol.js:112:13)
    at Socket.<anonymous> (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\Connection.js:94:28)
    at Socket.<anonymous> (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\Connection.js:526:10)
    at Socket.emit (node:events:377:35)
    at endReadableNT (node:internal/streams/readable:1312:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on Connection instance at:
    at Connection._handleProtocolError (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\Connection.js:423:8)
    at Protocol.emit (node:events:365:28)
    at Protocol._delegateError (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\protocol\Protocol.js:398:10)
    at Protocol.end (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\protocol\Protocol.js:116:8)
    at Socket.<anonymous> (A:\Рабочий стол\боты Discord\Metrostroi Bot\node_modules\mysql\lib\Connection.js:94:28)
    [... lines matching original stack trace ...]
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  fatal: true,
  code: 'PROTOCOL_CONNECTION_LOST'
}

а вот собственно сам код
var mysql      = require('mysql');
        var connection = mysql.createConnection({
          host     : 'localhost',
          user     : '-----',
          password : '-----',
          database : '-----'
        });
         
        connection.connect(function(err) {
          if (err) {
            console.error('error connecting: ' + err.stack);
            return;
          }
          console.log('Бот успешно подключился к MYSQL!');
        });

        connection.query("SELECT `disc_stat` FROM `ma_players` WHERE `disc`=?", [message.member.id], function (error, results, fields) {
            if (error) throw error;
            message.channel.bulkDelete(2);
            if (!results[0]) return message.reply(`Ваш DISOCRD ID не указан, зайдите на сервер GMOD и введите команду:\n**/discord ${message.member.id}**`);
            if (results[0].disc_stat == "1") return message.reply("Ваш DISCORD ID уже подтвержден!");
            if (results[0].disc_stat == "0") {
                connection.query("UPDATE `ma_players` SET `disc_stat`=1 WHERE `disc`=?", [message.member.id], function (error, results, fields) {
                    if (error) throw error;
                    message.reply("Ваш DISCORD ID подтвержден!");
                });
            }           
        });
  • Вопрос задан
  • 501 просмотр
Пригласить эксперта
Ответы на вопрос 2
Kentavr16
@Kentavr16
long cold winter
Насколько я понимаю, проблема в обработке ошибок с throw. Точнее отсутствие обработки ошибок как таковой. Вы просто прерываете программу при возникновении ошибки. Вот и ругается нод на не пойми какую ошибку (необработанную). Вместо throw выведите ошибку в консоль и все станет ясно. Наверное)
Ответ написан
Комментировать
mmmaaak
@mmmaaak
нужно выполнять connection.query() внутри колбэка connection.connect(), так как подключение в БД операция асинхронная, в момент вызова connection.query подключение еще не установлено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект