前几天我的电脑由于装驱动突然崩溃了,于是就重做系统了。但万万没有想到我的mysql数据库没有导出,好在我的php环境没有装载C盘。由此忙乎了一下午才恢复了表数据结构,但数据始终还是没有恢复。当重装完系统之后,又重新装了php的运行环境,我用的是wamp环境,首先我把原来的数据库文件夹复制到了新装的的数据库data文件夹下,于是打开phpmyadmin,看到基本数据表都运行正常,但用着用着才发现一个很重要的问题,我的user表不正常了,在插入数据时,所有记录都是空的。这让我很郁闷。于是我到phpmyadmin的sql与语句中去执行,提醒我插入成功,但是记录还是空的,这让我想起了重装系统的问题。于是上网查询,想起来了,我其他的表的是MyISAM引擎,而user表是InnoDB。很可能是这个原因导致的。好废话不多说,直接我的解决办法:
1、把原来的数据库文件夹复制到新的mysql的data的文件夹下。
2、打开phpmyadmin,可以看到原来的数据库,但是看不见InnoDB引擎的user表。查看data文件下有user.frm文件。(不知道什么原因,我不是专门搞数据库)
3、把user.frm文件复制出来一份,放到桌面。
4、然后把data下的user.frm文件删掉。(不删掉没法新建这个表)
5、在phpmyadmin下重新建立一个user表,字段随便取,我就建了一个id字段(没有字段建不了表)。
6、关闭mysql环境,到data文件夹下,把原来复制到桌面的user.frm文件覆盖新产生的user.frm。
7、重启mysql,可以看到原来的user表的结构又恢复了。但是数据没有了。(不知道为什么,我郁闷)。
到了这一步,我以为 万事大吉了,但问题又来了,这个表现在不能插入数据了。尝试很多遍,sql语句没有问题,插入的数据全是空的。
于是我
8、把这个数据库整个导出为sql文件。
9.将整个数据库删掉。
10、新建个数据库,重新导入那个sql文件,这回完全正常了。我是做php开发的,不是专门搞数据库了,误打误撞把原来的user数据表表结构恢复了,但我不知道原理。终止恢复了数据表结构,但是数据是没有了。记录一下以为以后再出现这中情况好查看,如果有高人还有更好的办法请不忘赐教。本人QQ:123270073
1、把原来的数据库文件夹复制到新的mysql的data的文件夹下。
2、打开phpmyadmin,可以看到原来的数据库,但是看不见InnoDB引擎的user表。查看data文件下有user.frm文件。(不知道什么原因,我不是专门搞数据库)
3、把user.frm文件复制出来一份,放到桌面。
4、然后把data下的user.frm文件删掉。(不删掉没法新建这个表)
5、在phpmyadmin下重新建立一个user表,字段随便取,我就建了一个id字段(没有字段建不了表)。
6、关闭mysql环境,到data文件夹下,把原来复制到桌面的user.frm文件覆盖新产生的user.frm。
7、重启mysql,可以看到原来的user表的结构又恢复了。但是数据没有了。(不知道为什么,我郁闷)。
到了这一步,我以为 万事大吉了,但问题又来了,这个表现在不能插入数据了。尝试很多遍,sql语句没有问题,插入的数据全是空的。
于是我
8、把这个数据库整个导出为sql文件。
9.将整个数据库删掉。
10、新建个数据库,重新导入那个sql文件,这回完全正常了。我是做php开发的,不是专门搞数据库了,误打误撞把原来的user数据表表结构恢复了,但我不知道原理。终止恢复了数据表结构,但是数据是没有了。记录一下以为以后再出现这中情况好查看,如果有高人还有更好的办法请不忘赐教。本人QQ:123270073
解决方案 »
- 请问MySQL查询时只会使用一个索引吗?
- 求助mysql workbench 如何使用、如何远程访问mysql数据库?
- 关于MySQL查询优化
- Lock wait timeout exceeded; try restarting transaction
- 还是那个老问题
- 求一mysql关键词匹配算法
- 怎么在phpadmin里面修改mysql里面的用户密码啊?
- 如果字段类型是int系列的,比如id smallint(4),可以update set id=id+1...,但如果字段类型是varchar(255)呢
- 我安装的mysql怎么没有winmysqladmin.exe这个程序?
- mysql 非常难的问题,有人知道吗?
- 嵌套查询
- 请教一个稍复杂文章排序问题~
所以说MYISAM的表可以通过文件复制直接恢复。
但INNODB存储引擎的表则不同,表结构是 .frm, 但数据是存放在 datadir所对应目录中的 ibdata1文件中。所以仅存在 .frm文件是无法恢复 innodb表的。