Windows 安裝 MySQL 後啟動服務報「錯誤 1067:程序意外終止」。這是極常見的問題,成因通常集中在 InnoDB 儲存引擎初始化失敗、臨時目錄未設定、配置檔路徑參數錯誤 三大類。本文彙整網友實測方案與官方文檔,提供系統性排查流程。
InnoDB: Error: unable to create temporary file; errno: 2
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported table type: INNODB
[ERROR] Aborting
my.ini (通常在 MySQL 安裝目錄或 C:\ProgramData\MySQL\MySQL Server X.Y\)default-storage-engine=InnoDB → 改為 default-storage-engine=MyISAMib_logfile0, ib_logfile1, ibdata1原理: MyISAM 不需複雜的表空間初始化,直接用檔案儲存,繞過 InnoDB 問題。缺點: 失去交易支援、外鍵、行級鎖定、崩潰恢復等企業級特性。
my.ini 中 innodb_data_home_dir 設定 (如 D:/)ibdata1, ib_logfile* (在 innodb_data_home_dir 或 datadir 下)實測: 多數情況下僅執行步驟 3 (刪除 ibdata1/ib_logfile*) 即可解決,前提是路徑權限正確。
InnoDB: Error: unable to create temporary file; errno: 2
my.ini [mysqld] 區段明確指定 tmpdir[mysqld]
tmpdir="D:/MySQL/Temp"
# 或 tmpdir="C:/Windows/Temp" (確保存在)
Temp 目錄下會產生 *.tmp 檔案,啟動成功
疑問: 為何首次安裝未設 tmpdir 也能啟動?可能預設使用系統 TEMP 環境變數,重裝/遷移後環境變數丟失導致失效。
mysqld --install MySQL --defaults-file=E:/mysql-5.0.83-win32/my.ini
報 1067 錯誤,但配置檔明明存在。
--defaults-extra-filemysqld --install MySQL --defaults-extra-file=E:/mysql-5.0.83-win32/my.ini
差異:
--defaults-file:唯一 讀取指定配置檔,忽略所有其他預設位置--defaults-extra-file:在預設配置基礎上額外讀取指定檔案,相容性更好用 mysqld --verbose --help 可查看參數說明。
datadir\主機名.err (關鍵!對症下藥)my.ini 權限與路徑:innodb_data_home_dir, datadir, tmpdiribdata1, ib_logfile0, ib_logfile1 (備份後)default-storage-engine=MyISAM 驗證是否 InnoDB 問題sc qc MySQL 查看啟動命令)mysqld --console 直接看輸出除錯| 特性 | InnoDB | MyISAM |
|---|---|---|
| 交易 (ACID) | ✅ 支援 | ❌ 不支援 |
| 行級鎖定 | ✅ | ❌ (表級鎖) |
| 外鍵約束 | ✅ | ❌ |
| 崩潰恢復 | ✅ (Redo/Undo Log) | ❌ (易損壞) |
| 儲存結構 | 共享表空間 ibdata1 + .frm | 三檔案 .frm/.MYD/.MYI 置於資料庫目錄 |
| 全文索引 | 5.6+ 支援 | ✅ (傳統優勢) |