node-mysql2 查询流返回错误数量的结果

问题描述

我定期查询数据库提取潜在的大型数据集。为此,我使用了 MysqL2 查询流,因此我可以通过异步迭代器使用它。

    async* getData(startTime: Date,endTime: Date) : AsyncGenerator<any> {
        const query = `
            SELECT * FROM ${this.tableName} WHERE 1=1
            AND createdAt >= ?
            AND createdAt < ?
        `;

        const recordStream = this.connectionPool.query(query,[startTime,endTime]).stream({ highWaterMark: 1000 });
        recordStream.on("error",async (error) => { await handleStreamError(error); });

        for await (const record of recordStream) {
            yield record;
        }
    }

问题在于,与 sequalize 或其他客户端相比,查询会返回更少的结果,或者没有数据而不会抛出任何错误
数据库中的数据此时是静态的,不会改变。
Node.js v14.5.0 是 MysqL2 2.5.0

解决方法

该问题在 Node.js v14.5.0 中出现,但在 14.14.0 及更高版本中没有出现。