全部產品
Search
文件中心

ApsaraDB RDS:調整執行個體character_set_server參數和collation_server參數

更新時間:Mar 20, 2025

在資料庫遷移、資料庫合并時,如果遇到資料庫字元集和字元定序不相容的情況,或者配套的應用程式有特殊的字元集和字元定序要求,您可以通過調整執行個體的character_set_server參數和collation_server參數,來修改字元集和字元定序,以滿足實際需求。

背景資訊

character_set_server參數用於設定執行個體的預設字元集,而collation_server參數用於設定該字元集的定序。

同一個字元集可以有多種定序。例如,utf8字元集支援utf8_general_ciutf8_bin定序,latin1字元集支援latin1_general_cilatin1_bin定序。這些定序決定了字元的比較和排序方式。

定序分為兩種類型:基於二進位和基於語言排序。

  • 基於二進位的定序(如 utf8_bin)直接比較字元的二進位值,不考慮語言語境和大小寫。例如,aA的二進位值不同,因此被視為不同的字元,並按其二進位值排序。這種排序方式速度快,但可能不符合語言習慣。

  • 基於語言的定序(如 utf8_general_ci)會考慮字元的語言語境和大小寫。例如,aA被視為相等,從而產生符合語言習慣的排序結果。

在MySQL中,character_set_servercollation_server是相互關聯的,因為定序是基於特定字元集的。需要注意的是,只有相容的字元集和定序才能組合使用,不能隨意搭配。

說明
  • 在MySQL中,字元集utf8utf8mb3是別名關係,實際上指向同一個字元集。utf8mb3是為了與utf8mb4區分而引入的別名。從MySQL 5.7開始,建議使用utf8mb4作為預設字元集,因為它支援更多字元。然而,在某些情境下(如與舊代碼或資料庫相容),仍需使用utf8utf8mb3

  • 需要注意的是,在character_set_servercollation_server參數中,只能設定utf8,而不支援直接設定utf8mb3

注意事項

character_set_servercollation_server參數僅支援在主執行個體中修改,唯讀執行個體不支援修改。

參數取值規則

  • 當僅修改character_set_server參數時,無論執行個體當前collation_server參數取值為何值,都會將其設定為character_set_server預設的collation_server取值。例如,將character_set_server配置為utf8時,系統會同時將collation_server的取值改為utf8_general_ci

    說明

    由於字元集utf8utf8mb3是別名關係,因此定序utf8_general_ciutf8mb3_general_ci是一樣的。當您將character_set_server設定為utf8時,collation_server可能會被修改為utf8mb3_general_ci

  • 當僅修改collation_server參數時,系統會檢查該參數取值與當前執行個體的character_set_server參數取值是否匹配。如果不匹配,則不允許修改collation_server參數。參數匹配關係請參見參數取值

  • 當同時修改character_set_servercollation_server參數時,會檢查這兩個參數取值的組合是否匹配,如果不匹配,則不允許修改這兩個參數。參數匹配關係請參見參數取值

  • character_set_servercollation_server參數的取值只允許參數取值的表格中選擇。

重要

當您建立或修改自訂參數模板時:

  • 僅選擇character_set_server參數,對應的collation_server會使用預設值。

  • 同時選擇character_set_servercollation_server時,需要確保參數組合滿足取值規則。

參數取值

參數預設值

MySQL版本

character_set_server

collation_server

MySQL 8.0,MySQL 5.7,MySQL 5.6

utf8

utf8_general_ci

參數匹配關係

重要

核心小版本需滿足:

  • MySQL 8.0:20200331及以上。

  • MySQL 5.7:20181226及以上。

  • MySQL 5.6:20221130及以上。

character_set_server

collation_server

是否是預設的collation_server

說明

utf8

utf8_general_ci

MySQL 8.0、5.7和5.6參數匹配關係相同。

utf8_bin

utf8_unicode_ci

utf8_unicode_520_ci

utf8_general_mysql500_ci

latin1

latin1_swedish_ci

MySQL 8.0、5.7和5.6參數匹配關係相同。

latin1_bin

latin1_general_ci

latin1_general_cs

gbk

gbk_chinese_ci

MySQL 8.0、5.7和5.6參數匹配關係相同。

gbk_bin

gb18030

gb18030_chinese_ci

MySQL 8.0和5.7參數匹配關係相同。MySQL 5.6不支援gb18030。

gb18030_bin

gb18030_unicode_520_ci

utf8mb4

utf8mb4_0900_ai_ci

僅MySQL 8.0支援,5.7和5.6不支援。

utf8mb4_0900_as_ci

utf8mb4_0900_as_cs

utf8mb4_0900_bin

utf8mb4_general_ci

  • MySQL 8.0:否

  • MySQL 5.7和5.6:是

utf8mb4_bin

MySQL 8.0、5.7和5.6參數匹配關係相同。

utf8mb4_unicode_520_ci

utf8mb4_unicode_ci

參考文檔

MySQL官方文檔: Character Set Configuration