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 啟動時發現「預設引擎」不可用,直接中止。
[mysqld]
default-storage-engine = MYISAM
skip-innodb
# 重啟後,data 目錄下的 ibdata1, ib_logfile0, ib_logfile1 可安全刪除
驗證:啟動日誌不再報錯,SHOW ENGINES; 顯示 InnoDB 為 DISABLED。
[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/1 | Redo Log (崩潰恢復關鍵) | 是 |
my.cnf / my.ini 中只能出現一個 default-storage-engine,最後一個生效。my.ini 可能在 C:\ProgramData\MySQL\MySQL Server 8.0\ 或安裝目錄,用 mysqld --help --verbose | findstr "default-storage-engine" 確認實際讀取路徑。skip-innodb 參數已移除,強制使用 InnoDB。mysql_upgrade,否則系統表結構不匹配也會導致啟動失敗。「Default storage engine not available」本質是配置互斥。現代 MySQL (5.7+) 強制 InnoDB,建議移除 skip-innodb、擁抱事務與行級鎖;極少數純讀取/兼容舊系統才考慮 MyISAM 預設。