首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 啟動報錯「Default storage engine (InnoDB) is not available」根因與修復

     編輯:MySQL 資料庫相關知識

錯誤現場

090613 10:15:27 [ERROR] Default storage engine (InnoDB) is not available
090613 10:15:27 [ERROR] Aborting
090613 10:15:27 [Note] Shutdown complete

根因分析:配置衝突

配置項設定值衝突邏輯
default-storage-engine INNODB 指定預設建表引擎為 InnoDB
skip-innodb 啟用 禁止載入 InnoDB 引擎插件

結果:MySQL 啟動時發現「預設引擎」不可用,直接中止。

修復方案(二選一)

方案 A:改用 MyISAM 作為預設引擎 (適用不需要 InnoDB 場景)

[mysqld]
default-storage-engine = MYISAM
skip-innodb

# 重啟後,data 目錄下的 ibdata1, ib_logfile0, ib_logfile1 可安全刪除

驗證:啟動日誌不再報錯,SHOW ENGINES; 顯示 InnoDB 為 DISABLED。

方案 B:保留 InnoDB,移除 skip-innodb (推薦現代應用)

[mysqld]
default-storage-engine = INNODB
# 刪除或註釋 skip-innodb

# 若 data 目錄下 ibdata1/ib_logfile* 缺失,MySQL 會自動建立 (見下方日誌)

自動建立日誌範例:

InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 24 MB
...
InnoDB: Started; log sequence number 0 0

核心檔案說明

檔案作用skip-innodb 後可否刪除
ibdata1系統表空間 (數據字典、Undo Log、雙寫緩衝)是
ib_logfile0/1Redo Log (崩潰恢復關鍵)是

避坑檢查清單

  1. my.cnf / my.ini 中只能出現一個 default-storage-engine,最後一個生效。
  2. Windows 下 my.ini 可能在 C:\ProgramData\MySQL\MySQL Server 8.0\ 或安裝目錄,用 mysqld --help --verbose | findstr "default-storage-engine" 確認實際讀取路徑。
  3. MySQL 5.7+ InnoDB 為唯一內建引擎,skip-innodb 參數已移除,強制使用 InnoDB。
  4. 升級大版本後必須執行 mysql_upgrade,否則系統表結構不匹配也會導致啟動失敗。

總結

「Default storage engine not available」本質是配置互斥。現代 MySQL (5.7+) 強制 InnoDB,建議移除 skip-innodb、擁抱事務與行級鎖;極少數純讀取/兼容舊系統才考慮 MyISAM 預設。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved