MySQL,插入数据提示“The table `xxx` is full”
背景:MEMORY引擎,hash索引
解决方法
1. 查看当前设置的table_size
show variables like ‘%table_size%‘;
2. 若为默认的16M,则需要根绝需要修改
修改方式有很多种,可以修改配置文件,然后重启MySQL(以后重启依然生效),也可以通过设置全局值(单次生效)
由于部署方式问题,这里的MySQL重启会覆盖配置,所以采用如下方法
set global tmp_table_size=1024*1024*1024;
set global max_heap_table_size=1024*1024*1024;
3. 由于是MEMORY引擎,重启后需要重置表
执行ALTER TABLE t_mem ENGINE=MEMORY; 重整表空间, 否则无法写入新数据 ;
4. 极端情况下 可以删除部分数据或全部数据重整表空间
5. 设置 big_tables = 1 ,将所有临时表存储在磁盘,而非内存中,缺点是如果某个SQL执行时需要用到临时表,则性能会差很多;
参考源:https://www.cnblogs.com/dhsx/p/5143039.html