ServBay MariaDB/MySQL 軟體包故障排除指南
概述
MariaDB 和 MySQL 是業界領先的開源關聯式資料庫管理系統,廣泛應用於各類 Web 應用及企業場景。ServBay 在 macOS 及 Windows 環境下整合了多個版本的 MariaDB/MySQL 軟體包,為開發者提供便利高效的本機資料庫環境。雖然這些系統以穩定著稱,但在開發與運行過程中,仍可能遇到套件無法啟動、連線失敗或效能下降等問題。
本指南旨在協助 ServBay 使用者診斷及排除常見的 MariaDB/MySQL 套件故障。我們將涵蓋常見問題、診斷步驟及具體解決方案,並特別說明 ServBay 環境下的專屬路徑與指令。
重要提醒:
- 在執行任何可能修改資料或設定的操作前,請務必備份您的資料庫!ServBay 內建備份功能,強烈建議定期使用。
- 文中指令及路徑範例使用特定版本號(如
11.3
或11.5
),請根據您在 ServBay 實際安裝的 MariaDB/MySQL 版本替換為對應號碼。可於 ServBay 應用介面查看已安裝及啟用的套件版本。 - 指令中,
<username>
、<database>
、<your_backup.sql>
等為佔位符,請替換為您實際的使用者名稱、資料庫名、備份檔案名等。 - 本指南支援 macOS 及 Windows 作業系統,並於相關章節提供對應路徑與指令範例。
通用初步診斷步驟
在進一步排查前,建議先依循以下基本檢查流程:
檢查 ServBay 套件狀態: 開啟 ServBay 應用介面,確認您想操作的 MariaDB/MySQL 版本已啟用且顯示為「運行中」。亦可使用命令列工具查詢:
bashservbayctl status mariadb <version> # 例如,檢查 MariaDB 11.3 的狀態: servbayctl status mariadb 11.3
1
2
3查看 ServBay 應用日誌: 有時 ServBay 管理套件時會記錄錯誤訊息。可於 ServBay 應用介面日誌區塊查閱,或檢查 ServBay 主日誌檔案。
檢查 MariaDB/MySQL 錯誤日誌: 這是定位資料庫套件啟動失敗或運行錯誤的最重要步驟。日誌檔案路徑通常如下:
macOS:
bash/Applications/ServBay/logs/mariadb/<version>/<version>.err # 例如,查看 MariaDB 11.3 的最新 50 行錯誤日誌: tail -n 50 /Applications/ServBay/logs/mariadb/11.3/11.3.err
1
2
3Windows:
cmdC:\ServBay\logs\mariadb\<version>\<version>.err # 例如,查看 MariaDB 11.3 的最新 50 行錯誤日誌: powershell "Get-Content -Path 'C:\ServBay\logs\mariadb\11.3\11.3.err' -Tail 50"
1
2
3請詳細閱讀日誌尾端的錯誤訊息,往往可直接指出問題所在。
常見問題與解決方案
1. 連線錯誤:SQLSTATE[HY000] [2002] No such file or directory
此錯誤通常代表客戶端無法透過 Unix socket 檔案連線至 MariaDB/MySQL 伺服器。於 macOS 上,Unix socket 為本機程序間的通訊方式,常用於本機連線,比 TCP/IP 連線效率更高。當應用程式或命令列工具嘗試使用 socket 連線但找不到指定路徑之 socket 檔案,就會出現此訊息。
可能原因與解決方式:
- MariaDB/MySQL 套件未運行:
- 檢查 ServBay 介面或使用
servbayctl status mariadb <version>
指令確認套件是否正在運行。 - 如未運行,可嘗試啟動:
servbayctl start mariadb <version>
,並檢查錯誤日誌(.err
檔)了解啟動失敗原因。
- 檢查 ServBay 介面或使用
- Socket 檔路徑不正確(僅 macOS/Linux):
- 客戶端連線時所用的 socket 檔路徑需與伺服器設定檔(
my.cnf
)中的路徑一致。 - macOS: 請檢查 MariaDB/MySQL 設定檔(
/Applications/ServBay/etc/mariadb/<version>/my.cnf
)的socket
參數。 - Windows: 不使用 Unix socket,主要以命名管線或 TCP/IP 連線。
- macOS: 確保您的應用程式或客戶端指定了正確的 socket 路徑,或使用 ServBay 的預設 socket 路徑。ServBay 預設 socket 路徑多在
/Applications/ServBay/tmp/
或/tmp/
,視版本及設定而定,例如/Applications/ServBay/tmp/mysql.sock
或/tmp/mysql.sock
。
- 客戶端連線時所用的 socket 檔路徑需與伺服器設定檔(
- ServBay 預設套件設定:
- 於 ServBay 的「設定」->「預設 SQL 伺服器」中,確認已選擇正確的 MariaDB/MySQL 版本。有些客戶端工具(例如
mysql
指令列工具於未指定-S
或-h
時)可能會連線到預設版本的 socket。
- 於 ServBay 的「設定」->「預設 SQL 伺服器」中,確認已選擇正確的 MariaDB/MySQL 版本。有些客戶端工具(例如
- 權限問題:
- macOS: MariaDB/MySQL 程序運行者在 socket 檔所屬目錄無寫入權限,或客戶端使用者無法讀取 socket 檔。ServBay 通常自動設定權限,但若手動修改過
/Applications/ServBay/tmp/
或/tmp/
目錄相關權限,可能導致問題。 - Windows: 請檢查執行 ServBay 的使用者帳號是否有在指定端口監聽及創建命名管線之權限。
- macOS: MariaDB/MySQL 程序運行者在 socket 檔所屬目錄無寫入權限,或客戶端使用者無法讀取 socket 檔。ServBay 通常自動設定權限,但若手動修改過
替代方案(強制使用網路連線):
- 嘗試以 IP 位址
127.0.0.1
取代localhost
進行連線,可強制客戶端改用 TCP/IP 而不是 Unix socket。若改用127.0.0.1
能連線成功,幾乎可確定問題跟 socket 檔路徑有關。bashmysql -u <username> -p -h 127.0.0.1 -P 3306
1
2. 連線錯誤:與網路連線有關(如 Connection refused
, Can't connect to MySQL server
)
此類錯誤常見於客戶端無法透過 TCP/IP 網路連線至 MariaDB/MySQL 伺服器。
可能原因與解決方式:
MariaDB/MySQL 套件未運行: (同上,先檢查套件狀態及
.err
日誌)端口被占用:
- 請確保 MariaDB/MySQL 所嘗試監聽的端口(預設 3306)無被其他程式占用。
macOS:
bashlsof -i :3306 # 或者 netstat -anv | grep LISTEN | grep 3306
1
2
3Windows:
cmdnetstat -an | findstr :3306 # 或以 PowerShell 查詢 Get-NetTCPConnection -LocalPort 3306
1
2
3若端口被占用,需終止該程序,或修改 MariaDB/MySQL 設定檔中的
port
參數並重啟套件。- macOS:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
- Windows:
C:\ServBay\etc\mariadb\<version>\my.cnf
防火牆阻擋連線:
macOS:
- 檢查 macOS 系統設定 -> 網路 -> 防火牆。
- 嘗試暫時允許
mysqld
程序通過防火牆:bash# 指令範例,請視實際環境調整路徑 sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mariadb/<version>/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mariadb/<version>/bin/mysqld
1
2
3
Windows:
- 檢查 Windows Defender 防火牆或第三方防火牆設定。
- 可於 Windows 防火牆加入允許指定程式或端口的規則:cmd
# 允許特定程式通過防火牆 netsh advfirewall firewall add rule name="ServBay MariaDB" dir=in action=allow program="C:\ServBay\bin\mariadb\<version>\bin\mysqld.exe"
1
2
設定檔問題 (
bind-address
):- 檢查
my.cnf
文件中的bind-address
參數。設為127.0.0.1
或localhost
時,僅允許本機 TCP/IP 連線。若需由其他機器或虛擬機連線,請改設0.0.0.0
(允許所有 IP)或指定 IP,並確認防火牆配置適當。
- 檢查
網路設定問題(
localhost
解析):- 確認
localhost
能正確解析至127.0.0.1
(IPv4 loopback)及::1
(IPv6 loopback)。
macOS:
bashping localhost # 檢查 hosts 檔案 cat /etc/hosts
1
2
3Windows:
cmdping localhost # 檢查 hosts 檔案 type C:\Windows\System32\drivers\etc\hosts
1
2
3確保 hosts 檔案有正確
localhost
內容。若有代理軟體,請暫時關閉以避免伺服流量干擾。- 確認
3. MariaDB/MySQL 套件無法啟動
可能原因與解決方式:
檢查錯誤日誌(最重要!): 如上述,參閱錯誤日誌以獲取啟動失敗的詳細錯誤訊息。日誌是排查啟動問題的關鍵。
- macOS:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
- Windows:
C:\ServBay\logs\mariadb\<version>\<version>.err
- macOS:
設定檔錯誤: 設定檔語法錯誤、無效參數或路徑指定錯誤。
設定檔位置:
- macOS:
/Applications/ServBay/etc/mariadb/<version>/my.cnf
- Windows:
C:\ServBay\etc\mariadb\<version>\my.cnf
驗證設定檔語法:
bash# macOS /Applications/ServBay/bin/mariadb/<version>/bin/mysqld --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf --validate-config # Windows C:\ServBay\bin\mariadb\<version>\bin\mysqld.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf --validate-config
1
2
3
4
5- macOS:
端口被占用: (同上,使用
lsof -i :<port>
或netstat
檢查端口狀態)硬碟空間不足: 資料庫資料目錄或日誌目錄所在分割區空間不足。資料庫運作需可寫入資料、日誌及暫存檔。
目錄路徑:
- macOS: 資料目錄
/Applications/ServBay/db/mariadb/<version>/
,日誌目錄/Applications/ServBay/logs/mariadb/<version>/
- Windows: 資料目錄
C:\ServBay\db\mariadb\<version>\
,日誌目錄C:\ServBay\logs\mariadb\<version>\
- macOS: 資料目錄
權限問題: MariaDB/MySQL 程序運行帳戶對設定檔、資料目錄或日誌目錄缺乏讀寫權限。ServBay 安裝及管理時會自動設定,但如使用者自行調整檔案或目錄權限,可能致故障。
macOS 權限檢查:
bashls -ld /Applications/ServBay/db/mariadb/<version> ls -l /Applications/ServBay/etc/mariadb/<version>/my.cnf ls -ld /Applications/ServBay/logs/mariadb/<version>
1
2
3確認資料庫程序使用者(如
_mysql
)具備必要的讀、寫及執行權限。Windows 權限檢查: 可透過檔案總管檢查目錄及檔案屬性,確保 ServBay 服務帳號對相關目錄及檔案有適當權限。
資料檔案損毀: (詳見下節「資料庫崩潰或資料損毀」)非正常關機或其他錯誤可能致資料檔案損毀,導致啟動失敗。
問題排除後:
- 嘗試重新啟動套件:
servbayctl restart mariadb <version>
4. 使用者權限或認證問題
成功連線資料庫伺服器後,可能因使用者名稱、密碼或權限不正確,出現錯誤(如 Access denied
)。
可能原因與解決方式:
- 帳號或密碼錯誤: 請確認連線使用之帳號及密碼完全正確。ServBay 提供 root 密碼重設功能,若遺忘 root 密碼可用此功能重設。
- 使用者主機限制: 資料庫使用者帳號可能被限制只能從特定主機連線,如
'<username>'@'localhost'
。若改用'<username>'@'127.0.0.1'
可能會失敗,反之亦然。'%'
代表允許任意主機連線。 - 權限不足: 使用者可能無存取目標資料庫、執行指定操作(如 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP 等)之權限。
- 檢查使用者權限:
- 使用權限充足(如 root 帳號)連入 MariaDB/MySQL 伺服器:bash
mysql -u root -p
1 - 在 SQL 命令列查詢特定使用者授權:sql
SHOW GRANTS FOR '<username>'@'<hostname>'; -- 例如,查詢 'webapp' 在 'localhost' 的權限: SHOW GRANTS FOR 'webapp'@'localhost'; -- 查詢 'admin' 來源為任意主機時之權限: SHOW GRANTS FOR 'admin'@'%';
1
2
3
4
5 - 若需調整,可透過
GRANT
、REVOKE
指令擴增或移除使用者權限,或創建新使用者並授予必要權限。
- 使用權限充足(如 root 帳號)連入 MariaDB/MySQL 伺服器:
5. 效能問題
資料庫效能變差會影響整體應用程式回應。
可能原因與解決方式:
- 慢查詢: 查詢語句本身效率低落、缺少索引或執行計劃不佳。
- 開啟慢查詢日誌: 於
my.cnf
檔案設定slow_query_log = 1
及long_query_time = 1
(記錄執行超過 1 秒的查詢),並指定日誌檔路徑slow_query_log_file
。重啟套件後,分析慢查詢日誌檔,找出耗時長的查詢。 - 使用
EXPLAIN
: 於疑似效能不佳的查詢前加上EXPLAIN
,分析執行計劃,確定是否利用索引、掃描行數等效能瓶頸。sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1 - 優化查詢語句: 根據
EXPLAIN
結果調整語法,避免低效操作(如SELECT *
、WHERE 條件中對欄位使用函式),確保 WHERE 和 JOIN 條件能用到索引。
- 開啟慢查詢日誌: 於
- 索引不足或不當: 常作查詢、排序(
ORDER BY
)、分組(GROUP BY
)之欄位未設索引,導致全表掃描。- 分析表結構及常用查詢: 確認需加索引之欄位。
- 建立索引:sql注意:建立索引會增加寫入負擔及磁碟使用,需衡量利弊。
CREATE INDEX idx_column_name ON your_table_name(column_name);
1
- 快取設定不當:
my.cnf
相關快取參數設定過小或過大,如innodb_buffer_pool_size
、key_buffer_size
(MyISAM 等)。- 調整
my.cnf
設定: 根據 macOS 系統記憶體大小及資料庫用途,調整快取參數。innodb_buffer_pool_size
(InnoDB 引擎)通常最重要,建議供主力資料庫伺服器時設為可用記憶體 50%-70%。修改設定後需重啟套件使其生效。ini[mysqld] # 範例,請依實際狀況調整,單位多為字節或縮寫(K, M, G) innodb_buffer_pool_size = 2G # 若大量使用 MyISAM 表: # key_buffer_size = 256M
1
2
3
4
5
- 調整
- 硬體資源瓶頸: CPU 使用率高、記憶體不足致頻繁交換、磁碟 I/O 成為瓶頸。可用 macOS 活動監視器或終端機指令
top
/htop
監控各項資源,找出癥結。
6. 資料庫崩潰或資料損毀
資料庫無法啟動、運行時頻繁當機或資料異常,可能涉及資料檔案損毀。
可能原因與解決方式:
- 查看錯誤日誌: 首要步驟,錯誤日誌通常記錄崩潰或損毀原因,例如 InnoDB 錯誤、檔案系統錯誤、硬體異常等。
- macOS:
/Applications/ServBay/logs/mariadb/<version>/<version>.err
- Windows:
C:\ServBay\logs\mariadb\<version>\<version>.err
- macOS:
- 硬體故障: 磁碟失效、記憶體錯誤等可能導致資料寫入或讀取失敗。請檢查系統日誌(Console.app)或使用硬體診斷工具。
- 軟體衝突或漏洞: 特定版本的 MariaDB/MySQL 可能有 Bug,或與系統其他程式衝突。
- 設定錯誤: 錯誤的
my.cnf
參數設定可能導致資料庫不穩或崩潰。 - 強制關機或中斷: 未使用正常程序停止 MariaDB/MySQL 套件(如直接關閉 ServBay 應用或強制終止進程)可能造成資料檔案不一致。
解決方案:
- 嘗試安全重啟: 優先以 ServBay 介面或命令正常重啟套件:
servbayctl restart mariadb <version>
,有時可自動回復。 - 使用
mysqlcheck
檢查並修復表格: 此工具可檢查表格完整性並嘗試修復(主要針對 MyISAM 表有效)。bash注意:# 使用 ServBay 設定檔及 root 帳號檢查所有資料庫表 mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --check --all-databases # MyISAM 表可嘗試自動修復 # mysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --auto-repair --check --all-databases
1
2
3
4--auto-repair
主要適用 MyISAM。對 InnoDB 表,--check
可通報問題,修復往往需更進階操作(如下述 InnoDB 強制恢復或從備份還原)。 - InnoDB 強制恢復(
innodb_force_recovery
): 若 InnoDB 無法啟動(錯誤日誌顯示 InnoDB 錯誤),可嘗試強制恢復。此操作具備資料遺失風險,僅於無法正常啟動且首要目標為資料備份時使用。- 強烈建議先備份資料目錄檔案(即使已損毀): 複製
/Applications/ServBay/db/mariadb/<version>/
目錄至其他位置。 - 編輯問題版本的
my.cnf
(/Applications/ServBay/etc/mariadb/<version>/my.cnf
)。 - 在
[mysqld]
區塊下加入:innodb_force_recovery = N
(N 為數字,從 1 試起,必要時遞增至 6,每次只嘗試一級,啟動失敗則再增加)。 - 嘗試啟動 MariaDB/MySQL:
servbayctl start mariadb <version>
。 - 若啟動成功(即使處於只讀或功能限制狀態),立即以
mysqldump
備份全部資料! 這是您復原資料的唯一機會。bash請確認備份檔已生成且大小合理。mysqldump --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p --all-databases --routines --triggers --events > /path/to/your_emergency_backup.sql
1 - 備份完成後,立即停止套件:
servbayctl stop mariadb <version>
- 編輯
my.cnf
,移除或註解掉innodb_force_recovery = N
。 - 執行資料還原: 通常需要初始化全新資料目錄(可將舊損毀目錄更名或刪除),再將已匯出的備份檔匯入新資料庫。
- 強烈建議先備份資料目錄檔案(即使已損毀): 複製
- 從備份還原: 若資料庫無法修復,或修復後資料不一致,最可靠的是還原最近可用的備份。ServBay 內建備份功能,備份檔案通常位於:
/Applications/ServBay/backup/mariadb/<version>/
(若使用 ServBay 備份功能)。- 還原指令範例(假定要還原至
<target_database_name>
資料庫):bash注意:# 確保目標資料庫已存在 # mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;" # 執行匯入指令 mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5<version>
請替換為目標 MariaDB/MySQL 套件版本號。
- 還原指令範例(假定要還原至
7. 備份與還原相關問題
於 ServBay 內建備份功能或手動以 mysqldump
備份/還原時,可能遇到以下狀況:
可能原因與解決方式:
- 備份檔案不完整或損毀:
- 檢查備份檔案大小(
ls -lh /path/to/your_backup.sql
),確認是否與預估相符。 - 嘗試以文字編輯器或
less
檢視檔案內容(less /path/to/your_backup.sql
),確認有正常 SQL 格式。 - 手動備份時留意指令執行時有無錯誤訊息。若用 ServBay 內建備份,請於應用日誌查詢備份結果。
- 檢查備份檔案大小(
- 還原指令錯誤:
- 使用錯誤的帳號、密碼或目標資料庫名稱。
- 執行匯入指令者權限不足。
- SQL 語法錯誤:若備份檔來自不同版本/型態的資料庫(MySQL 轉 MariaDB 或反之),可能有不相容的語法或特性。
- 外鍵約束問題: 匯入時資料表順序導致外鍵失敗,因引用表尚未創建或匯入。可於匯入時暫時停用外鍵檢查,待結束再重新啟用:sql注意: 停用外鍵檢查可能導致資料不一致,僅建議本流程中暫用。
-- 匯入前停用 SET foreign_key_checks = 0; -- 執行匯入指令,例如: source /path/to/your_backup.sql; -- 於 mysql 客戶端執行 -- 或命令行匯入方式: mysql ... < /path/to/your_backup.sql -- 匯入結束後啟用 SET foreign_key_checks = 1;
1
2
3
4
5
6
7
8 - 字元集或排序規則錯誤: 備份檔案中資料或表定義用不同於目標資料庫或資料表的字元集或排序規則。導致資料匯入出錯或出現亂碼。應確認目標資料庫或表與備份設定相同字元集(如
utf8mb4
)。
正確還原資料庫(命令行範例):
macOS:
bash
# 假設備份檔僅針對單一資料庫
# 先確定目標資料庫 (<target_database_name>) 已存在
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
# 正確指定設定檔、帳號、密碼與資料庫進行匯入
mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p <target_database_name> < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
# 若備份為所有資料庫 (--all-databases),無須指定資料庫名
# mysql --defaults-file=/Applications/ServBay/etc/mariadb/<version>/my.cnf -u <username> -p < /Applications/ServBay/backup/mariadb/<version>/<your_backup.sql>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Windows:
cmd
REM 假設備份檔僅針對單一資料庫
REM 先確定目標資料庫 (<target_database_name>) 已存在
REM C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u root -p -e "CREATE DATABASE <target_database_name>;"
REM 正確指定設定檔、帳號、密碼與資料庫名進行匯入
C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u <username> -p <target_database_name> < C:\ServBay\backup\mariadb\<version>\<your_backup.sql>
REM 若備份為所有資料庫 (--all-databases),無須指定資料庫名
REM C:\ServBay\bin\mariadb\<version>\bin\mysql.exe --defaults-file=C:\ServBay\etc\mariadb\<version>\my.cnf -u <username> -p < C:\ServBay\backup\mariadb\<version>\<your_backup.sql>
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
注意: <version>
請替換為目標 MariaDB/MySQL 套件版本號。ServBay 內建備份功能通常產生易於還原的檔案,並提供相應復原選項。
8. 已知 Bug:MariaDB 11.5.1 InnoDB 啟動失敗(ib_logfile0 was not found
/ Missing FILE_CHECKPOINT
)
此為 MariaDB 11.5.1 已知嚴重 Bug,可能致 InnoDB 儲存引擎無法正常初始化或從日誌檔復原,進而導致資料庫無法啟動。
錯誤日誌特徵:
於錯誤日誌檔案可見類似以下訊息:
macOS 範例(/Applications/ServBay/logs/mariadb/11.5/11.5.err
):
[ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
2
3
4
Windows 範例(C:\ServBay\logs\mariadb\11.5\11.5.err
):
[ERROR] InnoDB: File C:\ServBay\db\mariadb\11.5\ib_logfile0 was not found
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
2
3
4
或是:
[ERROR] InnoDB: Missing FILE_CHECKPOINT(xxxxx) at xxxxx
[ERROR] InnoDB: Log scan aborted at LSN xxxxx
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
1
2
3
4
5
2
3
4
5
此狀況意指 InnoDB 找不到或無法讀取其日誌檔,導致引擎初始化失敗。
解決方案(涉及資料遷移,執行前請先嘗試備份):
此問題難以靠一般手段修復,最保險方式為強制啟動導出資料,再將資料轉移至穩定的 MariaDB 版本。
嘗試強制恢復並備份資料(風險操作):
編輯設定檔:
- macOS:
/Applications/ServBay/etc/mariadb/11.5/my.cnf
- Windows:
C:\ServBay\etc\mariadb\11.5\my.cnf
於
[mysqld]
區塊下加上:innodb_force_recovery = 6
嘗試啟動服務:
bashservbayctl start mariadb 11.5
1若得以啟動,立即備份資料:
macOS:
bashmysqldump --defaults-file=/Applications/ServBay/etc/mariadb/11.5/my.cnf -u root -p --all-databases --routines --triggers --events > /Applications/ServBay/backup/mariadb/11.5/mariadb_11.5_emergency_backup.sql
1Windows:
cmdC:\ServBay\bin\mariadb\11.5\bin\mysqldump.exe --defaults-file=C:\ServBay\etc\mariadb\11.5\my.cnf -u root -p --all-databases --routines --triggers --events > C:\ServBay\backup\mariadb\11.5\mariadb_11.5_emergency_backup.sql
1務必確認備份檔案已成功生成且大小合理。
- macOS:
停止並處理問題版本的資料目錄:
- 停止 MariaDB 11.5 套件:
servbayctl stop mariadb 11.5
- 編輯
my.cnf
,移除或註解掉 `innodb_force_recovery
- 停止 MariaDB 11.5 套件: