无法启动mysql服务 错误1067:进程意外中止
这个错误在前些周遇到过,没有解决,直接粗暴的卸载重装了,自己用的是wampserver集成环境,重装的后果是mysql里面的一些已有的数据库就没有了,有点小悲剧,不过幸好都是一些测试用的数据库,后面直接向小伙伴重新要了份,这次又遇到了,受不了了,谷歌百度,花了俩钟把把解决了,解决方案是在mysql的my.ini文件中添加一行:
下面记录下问题解决windows下mysql启动不了的一般的流程:
1、先检查mysql的端口号是否被暂用,windows的cmd下使用,有用的话则把对应的程序关闭掉
windows下查询端口占用:netstat -ano | findstr "3306" ,由此可以得到占用端口的进程号
根据进程号PID得到进程名字:tasklist |findstr 6432 ,由此得到进程名称
windows杀死对应进程,用任务管理器,或者taskkill /PID 6432 或者taskkill /IM notepad.exe
2、如果没有端口占用,右击计算机---管理---服务,找打mysql,wampserver的是 wampmysqld,如下图,尝试启动,能启动最好,不能启动,会提示相应的报错,可以根据不同的错误类型,一般会得到相应的提示或解决方案,如不行,见下一步:
3、查看事件管理器中的应用程序,找到带红色感叹号的mysql,看看错误日志是什么,我这次遇到的问题如下:
InnoDB: Attempted to open a previously opened tablespace. Previous tablespace ck_cookabuy/ck_brands uses space ID: 35 at filepath: .\ck_cookabuy\ck_brands.ibd. Cannot open tablespace cookabuy3/ck_users which uses space ID: 35 at filepath: .\cookabuy3\ck_users.ibd
事件查看器
根据错误提示,在goole下找到这么篇文章:
就是在mysql的配置文件my.ini中添加
innodb_force_recovery = 1
重启后就正常了,完事之后可以把这个去掉。
后面又去了解了下关于这个配置选项已经错误的原因,
原来是我机器关机的时候没有正常关闭数据库,因为偷懒,在自己的机器上开发,一般就直接关机,结果导致mysql日志文件损坏,重启之后无法正常恢复,更无法正常对外提供服务。
而关
于innodb_force_recovery参数,参考这篇博文【案例】利用innodb_force_recovery 解决MySQL服务器crash无法重启问题 ,才知道他有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):不执行前滚的操作。
由此就能够理解这个错误的原因以及解决方法了,看来以后还是要关机还是要正常关闭数据库啊。
看了百度里面很多方法,折腾了挺久,最后就那么一句配置解决问题,是自己经验不足吧,仅此做个记录。希望这篇文章能够帮助遇到同样问题的小伙伴。