我本地安装的mysql起不起来了,原因不明,估计是有一张太大了,超过了16G。
尝试了各种办法,包括重新安装数据库之类,但是不管怎么样,一定要先把数据先保存好。
我的是Mac,所以数据已开始在 /usr/loal/var/mysql中,Windows的位置一定要查清楚,是一个data文件夹。
然后发现里面是一堆的frm和ibd。
因为最开始就崩溃了,所以直接使用上一层的ibdata1文件修复是无效的。
然后下面是真正的干货:
1、新建一个数据库
2、用文本编辑器打开frm文件(建议用windows下用emeditor等编辑器打开,在mac打开略麻烦)
3、文件里有很多乱码,但是无所谓,依然可以看到里面的字段有哪些
4、在数据库里新建数据表,然后按次序新增字段,按表的同名保存数据表
5、停止mysql服务(windows里是找到服务,然后停止;mac下是使用mysql.server stop,多运行几次才行)
6、将数据文件夹的frm文件覆盖新生成的frm文件
7、启动mysql
8、点击设计该数据表,发现索引、类型、长度之类的都恢复了
9、使用 show create table指令导出建表语句
10、新建要恢复的数据库
11、使用语句创建表
12、执行 alter table {表名} discard tablespace;
13、将要恢复的ibd文件复制进要恢复的数据库的目录
14、执行 alter table 表名 import tablespace;
15、执行后,刷新数据库,发现表出来了,双击后就能正常读取数据。
16、如果有多张表,循环执行2-15步骤即可