一、解决方式1
1.查阅官网文档,在mysql配置文件中/etc/my.cnf添加配置,成功启动
[mysqld]
innodb_force_recovery = 1
2、启动成功后使用Navicat连接数据库,由于配置了innodb_force_recovery = 1
,此时数据库只能读取,不能插入、修改和删除。但是这已经足够了
3、右键要转储数据的【数据库 】------- 【转储SQL文件】 ------- 【结构和数据】
4、保存到自己想保存的位置
5、点击保存即可将数据库的各个表的结构和数据保存为SQL文件了
二、解决方式2
1.查阅官网文档,在mysql配置文件中/etc/my.cnf添加配置,成功启动
[mysqld]
innodb_force_recovery = 1
2.备份数据库
mysqldump -h172.168.2.100 -uroot -p -A > mysql_all_bak.sql
如遇报表不存在,mysqldump可以添加参数:--force ,跳过错误
3.删除数据库
drop database hxdb; 或者将数据库数据库目录 mv hxdb hxdb_bak (保险)
4.去掉参数 innodb_force_recovery
将之前设置的参数去掉后,重新启动数据库
5.导入数据
mysql -uroot -p < mysql_all_bak.sql
Warning: Using a password on the command line interface can be insecure.
ERROR 1050 (42S01) at line 25: Table '`hxdb`.`tb_info`' already exists
如果提示表已经存在,这是因为将innodb_force_recovery参数去掉后,数据库会进行回滚操作,会生成相应的ibd文件,所以需要将该文件删除掉,删除后重新导入
mysql -uroot -p < mysql_all_bak.sq