Mysql清空数据报错:1114 – The table ‘xxxx’is full问题解决

会员评分: 5 / 5

点亮的星星点亮的星星点亮的星星点亮的星星点亮的星星
 

这里吐槽一下测试环境的空间太垃圾,只给数据库分配了4个G的空间,随便导入上百万条数据,轻轻松松就把空间给干满了,真是头疼,今早用Navicat清空数据的时候,报了一个错:1114 – The table ‘xxxx’is full

网上的解决办法大概就是修改/etc/my.cnf配置文件,在在[mysqld]下添加/修改两行:
tmp_table_size = 256M
max_heap_table_size = 256M

其实这个问题还真解决不了我的问题,我的问题就的确是因为空间满了:

可以看出var路径下已经100%,关于如何查看Mysql路径,我们下一篇会有讲解,这篇着重讲解如何搞定这个报错问题。由于是测试环境,所以我们可以删除一些数据来获得空间,但是在生产环境,该方法不适用!!!该篇讲删除数据是否能够释放空间,生产环境,是不能随意删数据的,慎重!!生产一般都有监控,空间达到90%时,基本监控系统会预警,这个时候想的应该是扩容,而不是如何去释放空间的问题!(个人意见)

MySQL删除数据是否释放磁盘空间情况:
1)drop table table_name 立刻释放磁盘空间 ,不管是Innodb和MyISAM(删表结构和数据,谨慎用)

2)truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。truncate table其实有点类似于drop table 然后creat,只不过这个CREATE TABLE IF NOT EXISTS IF NOT EXISTS IF NOT EXISTS 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;

3)delete from table_name删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 (应该是做了特别处理,也比较合理),InnoDB 不会释放磁盘空间;

4)对于delete from table_name where xxx带条件的删除, 不管是innodb还是MyISAM都不会释放磁盘空间;

5)delete操作以后使用optimize table table_name 会立刻释放磁盘空间。不管是innodb还是myisam 。所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。

6)delete from表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。
————————————————
版权声明:本文为CSDN博主「南丘xf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39309402/article/details/103272551

提交评论


安全码
刷新

 

自1996年以来,公司一直专注于域名注册、虚拟主机、服务器托管、网站建设、电子商务等互联网服务,不断践行"提供企业级解决方案,奉献个性化服务支持"的理念。作为戴尔"授权解决方案提供商",同时提供与公司服务相关联的硬件产品解决方案。
 

联系方式

地址:河南省郑州市经五路2号

电话:0371-63520088 

QQ:76257322

网站:800188.com

电邮:该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。

微信:用企业微信联系