ApsaraDB RDS for MySQL インスタンスのデータベースを移行またはマージする場合、データベースの文字セットと文字照合順序に互換性がない場合、またはサポートしているアプリケーションに文字セットと文字照合順序に関する特別な要件がある場合は、RDS インスタンスの character_set_server パラメーターと collation_server パラメーターを変更できます。
背景情報
character_set_server パラメーターは、RDS インスタンスのデフォルトの文字セットを指定します。collation_server パラメーターは、文字セットの照合順序を指定します。
1 つの文字セットはさまざまな照合順序をサポートします。たとえば、UTF-8 文字セットは、utf8_general_ci 照合順序と utf8_bin 照合順序をサポートします。Latin-1 文字セットは、latin1_general_ci 照合順序と latin1_bi 照合順序をサポートします。文字セットの照合順序は、文字セット内の文字の比較方法とソート方法を指定します。
照合順序は、バイナリ照合順序と言語固有の照合順序の 2 つのタイプに分類されます。
utf8_binなどのバイナリ照合順序は、言語環境や文字の大文字と小文字の区別にかかわらず、文字のバイナリ値を比較します。たとえば、文字aとAのバイナリ値は異なります。そのため、これらは異なる文字と見なされ、バイナリ値に基づいてソートされます。バイナリ照合順序は高速で文字をソートしますが、言語の動作に準拠していない可能性があります。utf8_general_ciなどの言語固有の照合順序は、文字の言語環境と大文字と小文字の区別を考慮します。たとえば、文字aとAは同じものと見なされます。その結果、言語の動作に準拠したソート結果が得られます。
MySQL では、照合順序は文字セット固有であるため、character_set_server と collation_server は関連付けられています。文字セットごとに異なる照合順序がサポートされています。互換性のある文字セットと照合順序のみを組み合わせて使用できます。
MySQL では、
utf8とutf8mb3は相互にエイリアスであり、同じ文字セットを指定します。utf8mb3は、utf8mb4と区別するためのエイリアスです。MySQL 5.7 以降のバージョンでは、より多くの文字をサポートするために、デフォルトの文字セットとしてutf8mb4文字セットを使用することをお勧めします。以前のバージョンの MySQL のコードやデータベースとの互換性テストなど、一部のシナリオでは、utf8文字セットまたはutf8mb3文字セットを使用する必要があります。character_set_serverパラメーターとcollation_serverパラメーターは、utf8mb3ではなくutf8にのみ設定できます。
注意事項
character_set_server パラメーターと collation_server パラメーターは、プライマリ RDS インスタンスでのみ変更でき、読み取り専用インスタンスでは変更できません。
パラメーター設定ルール
character_set_serverパラメーターのみを変更する場合、collation_serverパラメーターの現在の値に関係なく、システムはcollation_serverパラメーターをcharacter_set_serverパラメーターに一致するデフォルト値に自動的に設定します。たとえば、character_set_serverパラメーターをutf8に設定すると、システムはcollation_serverパラメーターの値をutf8_general_ciに自動的に変更します。説明utf8とutf8mb3は相互にエイリアスです。そのため、utf8_general_ci照合順序とutf8mb3_general_ci照合順序は同じです。character_set_serverパラメーターをutf8に設定すると、collation_serverパラメーターの値がutf8mb3_general_ciに変更される場合があります。collation_serverパラメーターのみを変更する場合、システムはパラメーターの新しい値がcharacter_set_serverパラメーターの値と一致するかどうかを確認します。パラメーターの値が一致しない場合、collation_serverパラメーターを変更することはできません。詳細については、「パラメーター値」をご参照ください。character_set_serverパラメーターとcollation_serverパラメーターを同時に変更する場合、システムはパラメーターの新しい値が一致するかどうかを確認します。新しい値が一致しない場合、パラメーターを変更することはできません。詳細については、「パラメーター値」をご参照ください。character_set_serverパラメーターとcollation_serverパラメーターは、「パラメーター値」の表にリストされている値にのみ設定できます。
カスタムパラメーターテンプレートを作成または変更する場合は、次の項目に注意する必要があります。
character_set_serverパラメーターのみを変更する場合、collation_serverパラメーターにはデフォルト値が使用されます。character_set_serverパラメーターとcollation_serverパラメーターを同時に変更する場合は、パラメーターの新しい値がパラメーター設定ルールを満たしていることを確認してください。
パラメーター値
デフォルト値
MySQL バージョン | character_set_server | collation_server |
MySQL 8.0、MySQL 5.7、および MySQL 5.6。 | utf8 | utf8_general_ci |
パラメーターのマッチング
RDS インスタンスのマイナーエンジンバージョンは、次のいずれかの要件を満たしている必要があります。
RDS インスタンスで MySQL 8.0 を実行している場合、マイナーエンジンバージョンは 20200331 以降である必要があります。
RDS インスタンスで MySQL 5.7 を実行している場合、マイナーエンジンバージョンは 20181226 以降である必要があります。
RDS インスタンスで MySQL 5.6 を実行している場合、マイナーエンジンバージョンは 20221130 以降である必要があります。
character_set_server | collation_server | collation_server のデフォルト値 | 説明 |
utf8 | utf8_general_ci | はい | パラメーターのマッチングは、MySQL 8.0、MySQL 5.7、および MySQL 5.6 を実行する RDS インスタンスで同じです。 |
utf8_bin | いいえ | ||
utf8_unicode_ci | いいえ | ||
utf8_unicode_520_ci | いいえ | ||
utf8_general_mysql500_ci | いいえ | ||
latin1 | latin1_swedish_ci | はい | パラメーターのマッチングは、MySQL 8.0、MySQL 5.7、および MySQL 5.6 を実行する RDS インスタンスで同じです。 |
latin1_bin | いいえ | ||
latin1_general_ci | いいえ | ||
latin1_general_cs | いいえ | ||
gbk | gbk_chinese_ci | はい | パラメーターのマッチングは、MySQL 8.0、MySQL 5.7、および MySQL 5.6 を実行する RDS インスタンスで同じです。 |
gbk_bin | いいえ | ||
gb18030 | gb18030_chinese_ci | はい | パラメーターのマッチングは、MySQL 8.0 および MySQL 5.7 を実行する RDS インスタンスで同じです。gb18030 は、MySQL 5.6 を実行する RDS インスタンスではサポートされていません。 |
gb18030_bin | いいえ | ||
gb18030_unicode_520_ci | いいえ | ||
utf8mb4 | utf8mb4_0900_ai_ci | はい | これらの照合順序は、MySQL 8.0 を実行する RDS インスタンスでのみサポートされており、MySQL 5.7 および MySQL 5.6 を実行する RDS インスタンスではサポートされていません。 |
utf8mb4_0900_as_ci | いいえ | ||
utf8mb4_0900_as_cs | いいえ | ||
utf8mb4_0900_bin | いいえ | ||
utf8mb4_general_ci |
| なし。 | |
utf8mb4_bin | いいえ | パラメーターのマッチングは、MySQL 8.0、MySQL 5.7、および MySQL 5.6 を実行する RDS インスタンスで同じです。 | |
utf8mb4_unicode_520_ci | いいえ | ||
utf8mb4_unicode_ci | いいえ |