MySQL 5.5 版本中,my.cnf 的 [mysqld] 區塊使用 default-character-set=utf8 會導致服務啟動報錯 unknown variable 'default-character-set'。本文記錄排查過程與正確配置姿勢。
在 [mysqld]、[client]、[mysql] 三區塊均加入:
default-character-set=utf8
重啟失敗,錯誤日誌 /var/lib/mysql/${hostname}.err 顯示:
[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
查閱官方文檔 dev.mysql.com/doc/refman/5.5/en/server-options.html 確認:
5.5 版本起,服務端字符集參數改為 character-set-server,default-character-set 僅適用於客戶端區塊([client]、[mysql])。
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8 # 關鍵修改:服務端專用參數
collation-server=utf8_general_ci # 建議同時指定排序規則
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
所有關鍵變量均為 utf8,配置生效。
character-set-server。utf8mb4,建議直接使用 character-set-server=utf8mb4、collation-server=utf8mb4_0900_ai_ci。[client]/[mysql])仍可用 default-character-set,但推薦統一改為 character-set-client 等具體參數。升級版本時務必查閱 Release Notes 中的參數變更,避免配置遷移導致服務啟動失敗。