legacy-knowledge-base
公開されました Jul. 2, 2025

LXC-SMデータベースでのUnicodeのフルサポート

written-by

Jose Jimenez

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

legacy-article

learn-legacy-article-disclaimer-text

問題

  • 絵文字記号は、例えば新しいWebコンテンツの一部として、データベースに保存することはできません。
  • Liferayサービスのログでは、このようなエラーが発生します。
    [JDBCExceptionReporter:234] Incorrect string value: '\xF0\x9F\x8F\x80</...' for column 'content' at row 1

環境

  • utf8 charsetにデータベースを持つLiferay PaaS
    • これは、MySQL Client:で確認できます。

      SELECT schema_name AS 'database', default_character_set_name AS 'charset', default_collation_name AS 'collation' FROM information_schema.SCHEMATA WHERE schema_name = 'lportal';
      +----------+---------+-----------------+
      | database | charset | collation |
      +----------+---------+-----------------+
      | lportal | utf8 | utf8_general_ci |
      +----------+---------+-----------------+
      1 row in set (0.001 sec)

解決

  • MySQL の utf8 文字セットは、1~3 byteの UTF-8 エンコードされたシンボルの保存のみをサポートしています。 unicodeを完全にサポートするためには、代わりに utf8mb4 の文字セットを使用する必要があります。
  • 新しいプロジェクトの場合(データ損失あり)
    1. database/LCP.json を修正し、環境変数 LCP_GCP_DATABASE_CHARSET"."utf8mb4" をデータベースサービスがデプロイされる各環境に追加します。
      ...
      "environments": {
      "infra": {
      "deploy": false
      },
      "prd": {
      "env": {
      "LCP_GCP_DATABASE_CHARSET": "utf8mb4"
      }
      },
      "uat": {
      "env": {
      "LCP_GCP_DATABASE_CHARSET": "utf8mb4"
      }
      },
      "dev": {
      "env": {
      "LCP_GCP_DATABASE_CHARSET": "utf8mb4"
      }
      }
      }
      ...
    2. 新しいビルドを作成します。
    3. prd 環境で作業している場合は、必要な場合に備えて完全なバックアップを作成してください。
    4. Liferay PaaS コンソールから既存のデータベース サービスを削除します。 この操作は、データベースも削除しようとしています。
    5. 新しいビルドをデプロイします。

  • 既存のプロジェクトの場合(データ損失なし)
    1. バックアップをダウンロードします。
    2. 空のMySQLデータベースにダンプをインポートします。
    3. データベースを utf8 から utf8mb4 に変換します。 特定のツールをご存知無い場合は、この この記事で手動のプロセスを見つけることができます。
    4. Liferay Cloudへの移行 ガイドに従って、変換されたデータベースのダンプを取得し、完全なバックアップをアップロードします。
    5. 新しいプロジェクトプロセスの手順1〜5に従って、Liferay Cloudにクリーンな utf8mb4 データベースを作成します。
    6. ステップ4でアップロードした完全なバックアップを復元します。

注意: 古い utf8 のバックアップを utf8mb4 データベースにリストアすると、 utf8mb4 の構成が失われます。

追加情報

 

did-this-article-resolve-your-issue

legacy-knowledge-base