最近查询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)