ApsaraDB RDS for MySQL インスタンスに絵文字を保存すると、エラーコード [1366]。不正な文字列値: 'xx' または 一般的なエラー: 3988 パラメーターに対して utf8mb3_general_ci から utf8mb4_general_ci への変換は不可能です というエラーメッセージが表示される場合があります。原因は、UTF-8 文字セットの文字が最大 3 バイトまでサポートされていることです。ただし、絵文字を保存するには 4 バイトが必要です。この場合、utf8mb4 文字セットを使用して絵文字を保存できます。
互換性要件
RDS インスタンスに絵文字を保存するには、次のコンポーネントに utf8mb4 文字セットを使用する必要があります。
クライアント:クライアントは出力文字列に utf8mb4 文字セットを使用します。
データベース接続レイヤー: utf8mb4 文字セットがサポートされています。たとえば、JDBC 接続を作成する場合は、次の要件が満たされていることを確認してください。
MySQL Connector/J ドライバーはバージョン 5.1.13 以降を実行しています。
JDBC 接続文字列に
characterEncodingパラメーターを設定していません。
RDS インスタンス:
ApsaraDB RDS コンソールでインスタンスパラメーターを設定する:
character_set_server = utf8mb4設定を使用する必要があります。データベースオブジェクト:
ALTER DATABASE db_name CHARACTER SET utf8mb4; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
文字セットの変更
文字セットがビジネス要件を満たしていない場合は、次の優先順位に基づいて文字セットを変更できます。
インスタンスレベルのパラメーター
character_set_serverデータベース文字セット
テーブル文字セット
フィールド文字セット
utf8 から utf8mb4 に文字セットを変更した後、次の点に注意してください。
データの互換性には影響しません。
新しいデータに絵文字を保存できます。
推定データストレージが増加します。