如何解决由于innodb_buffer_pool_size小,MySQL返回错误结果而没有任何警告
我的桌子是这样的:
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;
-
解压缩并将转储导入创建的数据库。
-
运行查询
SELECT count(*) AS count
FROM test
GROUP BY description
HAVING count >= 2
ORDER BY count ASC;
- 查看一些计数等于1的行。在我来说,这些行不是从开头开始,而是从第23行开始。
解决方法
MySQL团队已确认这是一个错误,需要修复。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。