MySQL 無法啟動(dòng)問題解決
序、
本文主要是針對作者實(shí)際經(jīng)歷,記錄探索并解決問題的過程,用于思路參考,并不代表所有相關(guān)問題的解法。

過程與內(nèi)容:
首先,自然是在任務(wù)管理器里面,手動(dòng)嘗試啟動(dòng)MySQL服務(wù),但是結(jié)果是啟動(dòng)失敗。

于是,又轉(zhuǎn)而去控制臺(Win+R,輸入cmd,回車)敲命令行的方式,希望可以看到錯(cuò)誤信息。
net start mysql
但是很尷尬,居然不顯示任何的錯(cuò)誤信息。

按照提示,又輸入對應(yīng)的命令。
net helpmsg 3534
居然還是什么錯(cuò)誤信息都不報(bào)。

那么,只好先一個(gè)一個(gè)問題排查。
先看端口占用。
netstat -ano|findstr 3306
如果是端口占用,導(dǎo)致MySQL沒法使用3306端口(如果你沒有通過配置文件去調(diào)整的話),那么很簡單,殺掉占用端口的進(jìn)程,再去啟動(dòng)MySQL即可。
只是很可惜,我所遇到的,并不是端口占用產(chǎn)生的問題。
那么說明,應(yīng)該就是單純得MySQL出了啥問題,導(dǎo)致無法啟動(dòng)。

于是,用另一個(gè)命令看看情況。
mysqld --console
出現(xiàn)報(bào)錯(cuò)信息:

報(bào)錯(cuò)重點(diǎn):
[InnoDB] Multiple files found for the same tablespace ID。
(這里其實(shí)也有可能是其他報(bào)錯(cuò),那就只能依據(jù)報(bào)錯(cuò)信息去尋求對應(yīng)的解決辦法了?。?/strong>
解釋:
關(guān)于什么是tablespace(表空間),可以看官網(wǎng)文檔:https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace.html
官網(wǎng)有提及該問題的地方(和我所遇到的問題的產(chǎn)生正好一樣,也是因?yàn)橐苿?dòng)數(shù)據(jù)文件導(dǎo)致):
https://dev.mysql.com/doc/refman/8.0/en/innodb-moving-data-files-offline.html
注:不過我也有看到別人是沒做任何操作,像是MySQL自身出了問題導(dǎo)致這個(gè)報(bào)錯(cuò)。
解決辦法:
我比較簡單粗暴,就是直接把外部遷移進(jìn)來的idb文件直接刪除了,然后就能正常啟動(dòng)了,畢竟原因就是多個(gè)idb文件對應(yīng)的tablespace ID一樣,只要把重復(fù)的去掉,只保留重要的那個(gè),就好了。
不過也要注意:如果數(shù)據(jù)很重要,為了避免刪錯(cuò),建議先備份一下再操作。我也有注意到網(wǎng)上一些教程更簡單粗暴,即直接刪除整個(gè)data文件夾,然后重新初始化MySQL,或者直接重裝MySQL,我覺得就有點(diǎn)沒必要。