首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.5 字符集配置陷阱:default-character-set 在 [mysqld] 區塊導致啟動失敗

     編輯:MySQL 資料庫相關知識

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'

根因:參數名在 5.5 中已更名

查閱官方文檔 dev.mysql.com/doc/refman/5.5/en/server-options.html 確認:
5.5 版本起,服務端字符集參數改為 character-set-server,default-character-set 僅適用於客戶端區塊([client]、[mysql])。

正確配置:my.cnf 三區塊差異化設置

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8   # 關鍵修改:服務端專用參數
collation-server=utf8_general_ci  # 建議同時指定排序規則

驗證結果:全鏈路 utf8

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,配置生效。

版本演進提示

  • MySQL 5.6/5.7:沿用 character-set-server。
  • MySQL 8.0:預設字符集改為 utf8mb4,建議直接使用 character-set-server=utf8mb4、collation-server=utf8mb4_0900_ai_ci。
  • 客戶端區塊([client]/[mysql])仍可用 default-character-set,但推薦統一改為 character-set-client 等具體參數。

升級版本時務必查閱 Release Notes 中的參數變更,避免配置遷移導致服務啟動失敗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved