現象
修改 `my.ini` 後重啟 MySQL 服務,配置 (如字符集) 不生效。
常見原因
- 文件名/位置錯誤:MySQL 讀取順序:
Windows: `C:\my.ini` → `C:\Windows\my.ini` → 安裝目錄 `my.ini` → `my-default.ini`。
若多處存在,**第一個被讀取的生效**,其餘忽略。
- 節點名錯誤:配置必須在正確節點下,如 `[mysqld]` (服務端)、`[client]` (客戶端)。
- 編碼/格式問題:文件需為 UTF-8 無 BOM 或 ANSI,行尾換行符正確。
- 未真正重啟服務:需以管理員身份 `net stop mysql` / `net start mysql`,或服務管理器重啟。
修正步驟
- 刪除/重命名系統盤多餘 `my.ini`,僅保留安裝目錄下的。
- 確保安裝目錄 `my.ini` 內容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 其他配置...
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
- 以管理員身份重啟服務:`net stop mysql && net start mysql`。
- 驗證:`mysql -e "SHOW VARIABLES LIKE 'character_set%';"`。
提問者方案
將 `my-default.ini` 重命名為 `my.ini` 放入安裝根目錄,在 `[mysqld]` 下加入 `character-set-server=utf8`,問題解決。
補充:MySQL 8.0+ 推薦 utf8mb4
`utf8` 實為 `utf8mb3`,僅支援 BMP 字符,**生產環境請用 `utf8mb4`** 完整支援 Emoji 等補充字符。