標籤:
這個錯誤在前些周遇到過,沒有解決,直接粗暴的卸載重裝了,自己用的是wampserverIntegration Environment,重裝的後果是mysql裡面的一些已有的資料庫就沒有了,有點小悲劇,不過幸好都是一些測試用的資料庫,後面直接向小夥伴重新要了份,這次又遇到了,受不了了,Google百度,花了倆鐘把把解決了,解決方案是在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):不執行前滾的操作。
由此就能夠理解這個錯誤的原因以及解決方案了,看來以後還是要關機還是要正常關閉資料庫啊。
看了百度裡面很多方法,折騰了挺久,最後就那麼一句配置解決問題,是自己經驗不足吧,僅此做個記錄。希望這篇文章能夠協助遇到同樣問題的小夥伴。
無法啟動mysql服務 錯誤1067:進程意外中止