一、解决方式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
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐