MAMP PRO的mySQL启动失败

错误日志如下:

2017-12-06 22:27:49 7257 [ERROR] InnoDB: Can't open './ibdata1'
2017-12-06 22:27:49 7257 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
2017-12-06 22:27:49 7257 [ERROR] Plugin 'InnoDB' init function returned error.
2017-12-06 22:27:49 7257 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-12-06 22:27:49 7257 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-12-06 22:27:49 7257 [ERROR] Aborting

其中关键的一行是:

InnoDB: Could not open or create the system tablespace.

解决办法:
一、打开MAMP PRO,点击File->Edit Template->MySQL->5.6.35(选择你的版本)),这时打开my.cnf,找到#innodb_force_recovery=2,改成innodb_force_recovery=1,具体操作如下图:

my.cof

改成
二、启动mySQL,成功后再关闭;
三、重新打开my.cnf,恢复成原始的配置;
这里写图片描述
四、再打开mySQL,完毕。

原因:
参数Innodb_force_recovery影响了整个InnoDB存储引擎的恢复状况,默认0。因为日志已经损坏,这里采用非常规手段,首先修改innodb_force_recovery参数,使mysqld跳过恢复步骤,将mysqld 启动,将数据导出来然后重建数据库。

innodb_force_recovery可以设置为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):不执行前滚的操作。

注意
a 当设置参数值大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。
立即对数据库做逻辑导出 ,完成之后将innodb_force_recovery设置为0 ,innodb_purge_thread=1 ,然后重建数据库 。

猜你喜欢

转载自blog.csdn.net/u012852597/article/details/79161742
今日推荐