问题描述
我的桌子是这样的:
CREATE TABLE `offers`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`description` text,PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
并运行如下查询:
SELECT count(*) AS count,description
FROM offers
GROUP BY description
HAVING count >= 2
ORDER BY count ASC;
返回结果,其中某些行的计数等于1。
我发现,当我将innodb_buffer_pool_size
从128M
增加到256M
时,就可以解决此问题。
我可以理解我的查询占用的内存太多,无法用较小的内存限制来完成。
但是,MysqL如何静静地返回错误结果而没有任何警告/错误?
我检查了错误log_error
文件,但未发现有关查询执行错误的任何警告/错误。
编辑:如何复制
经过以下测试:Ubuntu 18.04 64位和MysqL 5.7.31
- 创建数据库
CREATE DATABASE bug CHaraCTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-
下载数据库转储:https://f001.backblazeb2.com/b2api/v1/b2_download_file_by_id?fileId=4_z3eec3c1800331e85734f0b1b_f100d6e61629f98fe_d20200822_m211237_c001_v0001144_t0019
-
解压缩并将转储导入创建的数据库。
-
运行查询
SELECT count(*) AS count
FROM test
GROUP BY description
HAVING count >= 2
ORDER BY count ASC;
- 查看一些计数等于1的行。在我来说,这些行不是从开头开始,而是从第23行开始。
解决方法
MySQL团队已确认这是一个错误,需要修复。