Mysql如何删除以“#sql-”开头的临时表
来源:互联网 发布:全国省市区sql脚本 编辑:程序博客网 时间:2024/06/01 08:59
MySQL如何删除以“#sql-”开头的临时表
现象:在重建索引后,发现Mysql服务器的磁盘空间快满了
在用如下命令重建索引
mysql> alter table skatetab add unique index(id, uid), drop primary key, add primary key(uid, id);
在重建索引的过程中,因为空间不足,导致Mysql server reboot,重启之后发现空间少了100G。于是查看是哪个目录占用了这100G,最后发现在数据目录里发现
很多类似#sql-*.ibd临时文件和同文件名的#sql-*.frm。既然知道是临时表了,那就删除吧,肯定不能直接通过rm删除了,因为在ibdata里保存字典信息和Undo信
息,数据库重启后会报错的。
删除的方法:
在alter table的过程中,如果Mysql突然crash了,就会在数据目录里存在一些中间表,这些中间表是以“#sql-”开头的临时表,在你的数据目录里会看到
#sql-*.ibd和相应的 #sql-*.frm ,如果 #sql-*.ibd 和 #sql-*.frm两个文件都存在数据目录里的话,可以直接drop table,类似:
mysql> drop table `#mysql50##sql-928_76f7`;
前缀”#mysql50#“是让Mysql忽略文件名的安全编码,这个前缀是在Mysql5.1引入的
因为我的数据目录里#sql-*.ibd 和 #sql-*.frm两个文件都存,所以直接drop就可以了,磁盘空间100多G也回收了,如下所示
mysql> drop table `#mysql50##sql-928_76f7`;
Query OK, 0 rows affected (16.28 sec)
说明:如果在数据目录里只有#sql-*.ibd,而没有#sql-*.frm的话,就需要特殊处理
1.在另一数据schema里创建一个和欲删除表一样的表结构(包括相同的列和索引)
mysql> create database test
mysql> create table test.tmp like skatetab; //只复制表的结构和索引,不复制数据
2.把新创建的临时表的.frm文件复制到欲删除的数据目录里,并修改和 ”#sql-*.ibd“一样的文件名
shell> cp test/tmp.frm #sql-928_76f7.frm
3.确认#sql-*.ibd 和 #sql-*.frm两个文件都存,然后直接drop,如下:
mysql> drop table `#mysql50##sql-928_76f7`;
参考:http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html
------end------
- Mysql如何删除以“#sql-”开头的临时表
- Mysql如何删除以“#sql-”开头的临时表
- SQL SERVER 删除以XX开头的表。
- 如何删除以横线“-”开头的文件
- 删除以"temp"开头的所有表
- sqlserver删除以什么开头的表
- MySQL导出以H开头的表
- Linux下如何删除以~开头的文件
- Linux如何删除以特殊字符开头的文件
- 删除以"-"开头的文件
- SQL Server数据库中删除以'ABC'开头的表的处理
- sql server 同时删除一个数据库所有表名以p开头的表
- MySQL如何创建和删除临时表
- 在SQL SERVER如何删除指定字符开头的视图
- 【linux】删除以特殊符号开头的文件
- linux下删除以-开头的文件
- shell 删除以 / 字符开头的行
- SQL临时表删除
- github版本控制
- #kotlin学习笔记#kotlin的安装与第一行Kotlin代码
- NGUI简单背包系统的实现
- 变换次数
- Redis操作命令总结
- Mysql如何删除以“#sql-”开头的临时表
- android 沉浸式状态栏 软键盘挡住输入框问题
- java基础——流程控制(选择结构)if语句
- 97-ICMP 协议(端口不可达)
- 测试触发器时出现的错误
- 部分情况下Error:(xx, xx) Failed to resolve: xxxxxx解决。
- sscanf的操作用法
- spring
- 终极报错解决方案:Failed to resolve:annotationProcessor