MySQL Error 1114

在运行bg.sql的时候,提示Error 1114 (HY000):The table ’ ’ is full.
开始,我想着是磁盘空间不足,想把TEMP文件存到C盘以外的磁盘中去。为此,我压缩了G盘,新建了一个H盘,并且在其中建立了文件夹 MySQL_Temp。同时,还要设置该磁盘的权限:属性 > 安全 > 编辑 > 完全控制。
在C:/Program Files/MySQL/my.ini,这个配置文件中添加

tmpdir = H://MySQL_Temp

语句在[mysql]栏下。
重启mysql服务后,虽然临时缓存换成了H盘,但还是提示Error 1114;

查了网上的教程后,网友建议在my.ini中添加

tmp_table_size = 256M
max_heap_table_size = 256M

但是,就算我把上限设置为100000M,Error 1114也没有解决;

查了外网论坛后,又有一种方法,即在my.ini中添加:

innobd_data_file_path = ibdata1:10M:autoextend:max:512M

同样,我将上限调到1000000M都没有解决问题。

理论上,InnoBD引擎在处理海量数据时更有优势,但有老帖子提到,这个引擎也有些问题: transactionor 大于1024时不好使。说实话,我没看懂这什么意思,但先假定是引擎的问题。那就换引擎啦!将innobd相关的语句在my.ini中注释掉,添加语句如下:

tmp_table_size = 256M
max_heap_table_size = 256M 
default_storage_engine = MEMORY
internal_tmp_men_storage_engine = MEMORY

重启mysql后,再次运行程序就没有报错。

反思:
我运行的程序主要的语句是WITH AS,会不会这个语句更适合在MEMORY引擎下运行?

附记:
我用命令提示符运行的mysql:

net start mysql #注意要先cd至sql文件所在位置
mysql -u root -p my_database < test.sql > test.log

最后生成了一个100M的log文件,我用R语言处理后,以数据框的形式存储:

library(data.table)
library(tidyverse)

setwd('G:/') #转换至log保存的路径
test <- read.table('test.log', T, sep = '\t') %>% as.data.table
write.csv(test, 'G:/test.csv')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值