解决方案简述
数据库无法启动,提示“本地计算机上的MySQL57服务启动后停止、某些服务在未由其他服务或程序使用时将自动停止。”。可以在CMD窗口通过“mysqld --console”命令查看一下错误信息,如果提示是“[ERROR] failed to set datadir to C:\Program Files\MySQL\MySQL Server 5.7\data\”,而数据路径配置又无误,可以尝试通过“mysqld --defaults-file=”命令指定配置文件(即my.ini或my.cof文件)的路径来启动数据库。
解决过程详述
今天早上想重启一下数据库服务器,但是怕突然重启服务器会损坏MySQL数据,所以我先在控制台优雅地关闭了MySQL57的服务,然后重启了服务器。服务器重启完毕以后,MySQL57没有自动启动,在控制台也无法手动启动,并且报出了警告,如下图所示:
发现此问题以后,我到数据文件夹查看了数据库错误记录日志文件,但是文件里并没有错误,所以有点懵,因为这种情况下无法得知问题所在。后来,尝试了种种方式,都无法成功启动数据库。
终于,在机缘巧合下,看到一篇文章,说是可以通过“mysqld --console”命令查看一下问题的原因,于是尝试着在管理员命令行窗口输入了“mysqld --console”命令,发现问题是数据存储文件夹读取错误,错误提示如下图所示:
但是我的my.ini文件中配置的数据存储文件夹的位置是没有问题的,于是又陷入了新一波的疑惑中。
在百思不得解的时候,强哥跟我说通过“mysqld --defaults-file=”指定my.ini文件来启动mysql试一下。我按照强哥说的方式测试了一次,但是却出现了图3中的问题,隐隐约约感觉是空格造成了问题,于是把my.ini文件移动到一个没有空格的路径下,再次启动mysql,问题终于解决了。
自从我开发的系统上线以来,MySQL数据库已经出过四次问题了,前三次都是因找不到解决方案,只得重装了数据库,也丢失了很多重要数据。这一次终于能够修复数据库问题了,非常的激动。非常感谢强哥在问题出现以后一直在帮我寻找解决方案,如果没有他的指导,可能这次又要重装数据库了。