首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 1067 錯誤完整解決方案:從配置檔缺失到 InnoDB 日誌損壞八大修復手冊

     編輯:MySQL 綜合教學

錯誤現象

A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.

Windows 服務管理器顯示「MySQL 服務正在啟動...」隨即失敗,事件檢視器記錄服務啟動超時或異常終止。

八大修復方案 (按成功率排序)

方案一:補全 my.ini 關鍵路徑配置 (最常見、成功率最高)

MySQL 5.5+ Windows 安裝若未生成 my.ini 或路徑錯誤,服務無法定位資料目錄。

# 位置:C:\Windows\my.ini 或 MySQL 安裝目錄\my.ini
[mysqld]
# 必須使用正斜線 / 或雙反斜線 \\
basedir=C:/Program Files/MySQL/MySQL Server 8.0
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
port=3306
socket=mysql.sock

[client]
port=3306
socket=mysql.sock
  • basedir:MySQL 安裝根目錄 (含 bin、share)
  • datadir:資料目錄 (含 ibdata1、*.ibd、mysql 系統庫)
  • 路徑含空格時**不需加引號**,但建議避免空格路徑

方案二:刪除損壞的 InnoDB 日誌檔案

異常關機、磁碟滿、參數變更導致 ib_logfile0/1 與 innodb_log_file_size 不匹配。

# 1. 停止服務
net stop mysql

# 2. 備份並刪除 (datadir 下)
rename ibdata1 ibdata1.bak
rename ib_logfile0 ib_logfile0.bak
rename ib_logfile1 ib_logfile1.bak

# 3. 啟動服務 (InnoDB 會自動重建)
net start mysql

⚠️ 警告:刪除 ibdata1 會導致**所有 InnoDB 表資料遺失**!僅在確認有完整備份或為全新安裝時操作。優先嘗試僅刪除 ib_logfile*。

方案三:修正儲存引擎預設值 (MySQL 5.5+ 預設 InnoDB 導致啟動失敗)

某些精簡版 Windows 環境 InnoDB 初始化失敗 (記憶體不足、權限、相容性)。

[mysqld]
default-storage-engine=MyISAM
# 或禁用 InnoDB (不推薦生產)
skip-innodb

啟動成功後再改回 InnoDB 並調優參數。

方案四:清理殘留服務與註冊表

# 管理員 CMD / PowerShell
sc delete mysql
sc delete mysql80

# 刪除註冊表殘留
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\mysql" /f
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\mysql80" /f

# 重新安裝服務
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld" --install MySQL80 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"

方案五:授予資料目錄完整權限

  • 右鍵 datadir → 屬性 → 安全性 → 編輯 → 新增 SYSTEM、Administrators、NETWORK SERVICE → 完全控制
  • 或命令列:icacls "C:\ProgramData\MySQL\MySQL Server 8.0\Data" /grant "SYSTEM:(OI)(CI)F" "Administrators:(OI)(CI)F" "NETWORK SERVICE:(OI)(CI)F"

方案六:檢查連接埠衝突

netstat -ano | findstr :3306
# 若被佔用,找出 PID → 任務管理員結束進程,或修改 my.ini port=3307

方案七:移除衝突的 my.ini 複本

Windows 會按順序讀取:

  1. C:\Windows\my.ini
  2. C:\Windows\my.cnf
  3. C:\my.ini
  4. C:\my.cnf
  5. basedir\my.ini
  6. basedir\my.cnf
  7. datadir\my.ini

保留**唯一一份**正確配置 (建議放在 datadir 或 basedir),刪除其他位置的 my.ini/my.cnf。

方案八:以管理員身分執行安裝/服務註冊

  • 安裝 MySQL 時右鍵「以管理員身分執行」
  • 註冊服務:mysqld --install 在管理員 CMD/PowerShell 執行
  • 啟動服務:net start mysql 同樣需管理員權限

診斷流程圖

1067 錯誤
    │
    ├─→ 查看錯誤日誌 (datadir\*.err)
    │       ├─ "Can't create test file" → 權限/路徑問題 → 方案一、五
    │       ├─ "InnoDB: Log file size mismatch" → 方案二
    │       ├─ "Unknown variable 'default-storage-engine=InnoDB'" → 版本不支援/拼寫錯 → 方案三
    │       ├─ "Address already in use" → 方案六
    │       └─ "Plugin 'InnoDB' registration failed" → 方案二、三、五
    │
    ├─→ 檢查 my.ini 位置與內容 → 方案一、七
    │
    ├─→ 檢查服務註冊 → 方案四、八
    │
    └─→ 事件檢視器 → 服務啟動超時 (30秒) → 增加服務啟動超時註冊表值

註冊表調整服務啟動超時 (Windows Server 2012+)

reg add "HKLM\SYSTEM\CurrentControlSet\Control" /v ServicesPipeTimeout /t REG_DWORD /d 120000 /f
# 120秒 = 120000毫秒,預設30秒
# 需重啟 OS 生效

避坑總結

操作風險正確做法
直接刪除 ibdata1全量資料遺失優先刪除 ib_logfile*;有備份才動 ibdata1
my.ini 路徑用反斜線 \轉義字元導致路徑錯誤用正斜線 / 或雙反斜線 \\
多份 my.ini 共存配置衝突、難排查僅保留一份,其它刪除或改名
非管理員安裝/註冊服務權限不足導致 1067全程管理員權限
修改配置未重啟以為生效實際未生效net stop/start mysql 或 systemctl restart
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved