mysql 出现 "the table is full"的问题

继续折腾NAS… 数据导入到一半又出问题了,复制一个表复制到400多万行的时候提示标题的错误表满了。这让我感到莫名其妙,因为之前导入其他更大的表的时候并没有提示这个错误,又开始了漫长的搜索、检查、重试循环。每次都是复制到相同数量的行数的时候报错。

搜索引擎返回的大多数文章都是转载说MEMORY类型数据库,对应的解决方案——是因为内存不足..按照这些教程一步步操作下来发现不对,修改 max_heap_table_size 和 tmp_table_size 根本没有帮助,况且我对比了原数据库和目标数据库的这两个参数是一致的,怎么原来能储存的数据复制出来就装不下?见鬼!

内存表的解决方案被否定,仔细重新检查,表的类型是innodb ..偏偏能搜到innodb的 1114错误相关条目很少没什么帮助。再检查出错的时候disk free 和 ram free 均没有问题..

于是又回去仔细对比检查 my.cnf

发现在InnoDB配置部分里这一行很可疑

innodb_data_file_path = ibdata1:100M:autoextend:max:128M

去查看数据库文件的存储路径

果然 ibdata1 文件已经128M了…

把上面那行修改为

innodb_data_file_path = ibdata1:100M:autoextend

保存,重启mysqld, 再试..临界的行数顺利突破,并成功

image

这个文件也超出128M,看来问题就在此。

可能最初MAX的考虑是因为这台nas的内存比较小所以添加了限制?不得而知,如果有负载比较大的操作时再观察观察吧。

猜你喜欢

转载自tmuffamd.iteye.com/blog/2289283
今日推荐