Ошибка: пакеты не в порядке. Получил: 1 Ожидаемый: 0 - PullRequest
0 голосов
/ 10 марта 2020

Все решения, которые я нашел для этой проблемы, не работают для меня. Я просто загружаю один набор данных, и после приблизительного запроса 150 я получаю эту ошибку:

Error: Packets out of order. Got: 1 Expected: 0
at Parser._tryReadPacketHeader (C:\dev\node\webkoll\node_modules\mysql\lib\protocol\Parser.js:470:15)
at Parser.write (C:\dev\node\webkoll\node_modules\mysql\lib\protocol\Parser.js:33:29)
at Protocol.write (C:\dev\node\webkoll\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (C:\dev\node\webkoll\node_modules\mysql\lib\Connection.js:88:28)
at Socket.<anonymous> (C:\dev\node\webkoll\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (events.js:223:5)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead (internal/stream_base_commons.js:181:23)
--------------------
at Protocol._enqueue (C:\dev\node\webkoll\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (C:\dev\node\webkoll\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at PoolConnection.connect (C:\dev\node\webkoll\node_modules\mysql\lib\Connection.js:116:18)
at Pool.getConnection (C:\dev\node\webkoll\node_modules\mysql\lib\Pool.js:48:16)
at C:\dev\node\webkoll\dbHelper.js:35:22
at new Promise (<anonymous>)
at dbHelper.execQueryWithParams (C:\dev\node\webkoll\dbHelper.js:34:16)
at dbHelper.loadFinishedResultFlag (C:\dev\node\webkoll\dbHelper.js:68:21)
at C:\dev\node\webkoll\index.js:321:30
at Layer.handle [as handle_request] (C:\dev\node\webkoll\node_modules\express\lib\router\layer.js:95:5) {  code: PROTOCOL_PACKETS_OUT_OF_ORDER',  fatal: true}

Я использую узел v12.14.1 и пакет npm mysql v2.18.1. Я также установил max_allowed_packet в 1G, но это не помогло.

Вот код, который я использую для получения данных:

class dbHelper {
constructor() {
    const { host, user, password, database, connectionLimit } = config.db;
    this.con = mysql.createPool({
        connectionLimit,
        host,
        user,
        password,
        database
    });
}

async execQueryWithParams(query, params) {
    return new Promise((resolve, reject) => {
        this.con.getConnection((err, connect) => {
            if (err) {
                console.log(err);
                return reject(err)
            }
            connect.query(query, [params], (err, result) => {
                if (err) {
                    return reject(err);
                }
                resolve(result);
            })
        })
    });
}

1 Ответ

0 голосов
/ 10 марта 2020

Я обнаружил проблему.

После использования пакета npm mysql2 я получил сообщение об ошибке: «Слишком много соединений».

Я тупо часто инициализировал свой класс, поэтому после использования только одного экземпляра все работало нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...