最近查询MySQL的一个报表程序,在执行大的查询分组操作的时候报错。
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1114, "The table '/data/mysql/5306/tmp/#sql70da_911_3' is full")
[SQL: select .. group by ..) a
;]
数据库版本。
dba_ch [(none)]> select version();
+-----------+
| version() |
+-----------+
| 8.0.25-15 |
+-----------+
1 row in set (0.00 sec)
解决方法:
set global internal_tmp_mem_storage_engine = MEMORY;
并增大tmp_table_size、max_heap_table_size参数的值到640M。
root [(none)]> set global tmp_table_size=134217728*5;
Query OK, 0 rows affected (0.00 sec)
root [(none)]> set global max_heap_table_size=134217728*5;
Query OK, 0 rows affected (0.00 sec)
在执行大型查询并进行分组操作时,遇到了MySQL错误1114,提示临时表空间已满。该问题出现在MySQL 8.0.25-15版本中。解决方案包括将内部临时表存储引擎设置为MEMORY,并增加tmp_table_size和max_heap_table_size参数的值,分别设置为640M。通过这些设置,可以扩大内存中临时表的大小,避免因空间不足而引发的错误。
3228

被折叠的 条评论
为什么被折叠?



