mysql版本:mysql-5.7.30-winx64
注意:一定不要修改之前的data文件夹,不然会丢失数据。如果以下方法依旧启动失败,需要重新下载同版本mysql并安装,同时完整的复制data文件夹到新安装的mysql目录
解决方式一:
1,修改my.ini文件,在mysqld下添加innodb_force_recovery = 2,其中数字2可以是1-6,可以挨个尝试。
值为1:(SRV_FORCE_IGNORE_CORRUPT):忽略检查到的corrupt页。
值为2:(SRV_FORCE_NO_BACKGROUND):阻止主线程的运行,如主线程需要执行full purge操作,会导致crash。
值为3:(SRV_FORCE_NO_TRX_UNDO):不执行事务回滚操作。
值为4:(SRV_FORCE_NO_IBUF_MERGE):不执行插入缓冲的合并操作。
值为5:(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存储引擎会将未提交的事务视为已提交。
值为6:(SRV_FORCE_NO_LOG_REDO):不执行前滚的操作。
完整的my.ini文件如下
[client]
port=3306
default-character-set=utf8
[mysqld]
innodb_force_recovery = 2
general-log=
log-output=FILE
general-log-file=D:\dev\mysql-5.7.32-winx64\mysql.log
log_error = D:\dev\mysql-5.7.32-winx64\mysql_error.log
skip-grant-tables
port=3306
character_set_server=utf8
basedir=D:\dev\mysql-5.7.32-winx64
#解压目录
datadir=D:\dev\mysql-5.7.32-winx64\data
#解压目录下data目录
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[WinMySQLAdmin]
D:\dev\mysql-5.7.32-winx64\bin\mysqld.exe
2,重新启动mysql
net start mysql
3, 使用navicat重连数据库,恢复了所有库和表数据。