MySQL 无法启动问题解决
序、
本文主要是针对作者实际经历,记录探索并解决问题的过程,用于思路参考,并不代表所有相关问题的解法。

过程与内容:
首先,自然是在任务管理器里面,手动尝试启动MySQL服务,但是结果是启动失败。

于是,又转而去控制台(Win+R,输入cmd,回车)敲命令行的方式,希望可以看到错误信息。
net start mysql
但是很尴尬,居然不显示任何的错误信息。

按照提示,又输入对应的命令。
net helpmsg 3534
居然还是什么错误信息都不报。

那么,只好先一个一个问题排查。
先看端口占用。
netstat -ano|findstr 3306
如果是端口占用,导致MySQL没法使用3306端口(如果你没有通过配置文件去调整的话),那么很简单,杀掉占用端口的进程,再去启动MySQL即可。
只是很可惜,我所遇到的,并不是端口占用产生的问题。
那么说明,应该就是单纯得MySQL出了啥问题,导致无法启动。

于是,用另一个命令看看情况。
mysqld --console
出现报错信息:

报错重点:
[InnoDB] Multiple files found for the same tablespace ID。
(这里其实也有可能是其他报错,那就只能依据报错信息去寻求对应的解决办法了!)
解释:
关于什么是tablespace(表空间),可以看官网文档:https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace.html
官网有提及该问题的地方(和我所遇到的问题的产生正好一样,也是因为移动数据文件导致):
https://dev.mysql.com/doc/refman/8.0/en/innodb-moving-data-files-offline.html
注:不过我也有看到别人是没做任何操作,像是MySQL自身出了问题导致这个报错。
解决办法:
我比较简单粗暴,就是直接把外部迁移进来的idb文件直接删除了,然后就能正常启动了,毕竟原因就是多个idb文件对应的tablespace ID一样,只要把重复的去掉,只保留重要的那个,就好了。
不过也要注意:如果数据很重要,为了避免删错,建议先备份一下再操作。我也有注意到网上一些教程更简单粗暴,即直接删除整个data文件夹,然后重新初始化MySQL,或者直接重装MySQL,我觉得就有点没必要。