legacy-knowledge-base
公開されました Jun. 30, 2025

7.4へのアップグレードで、DDMFieldAttributeテーブルにレコードを挿入しようとすると失敗する。

written-by

Sorin Pop

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

問題

  • 7.4へのアップグレードを実行しているのですが、以下のようなエラーが出て失敗します:
com.liferay.portal.kernel.log.LogSanitizerException: com.liferay.portal.kernel.upgrade.UpgradeException: java.sql.BatchUpdateException: Batch entry 155 insert into DDMFieldAttribute (mvccVersion, ctCollectionId, fieldAttributeId, companyId, fieldId, storageId, attributeName, languageId,largeAttributeValue, smallAttributeValue) values (0, 0, 221906, 10108, 197794, 15585405, '', '',NULL, 'Optimized by JPEGmini 3.18.2.210033067-TBTBLN 0xa358ba22Optimized by JPEGmini 3.18.2.210033067-TBTBLN 0xa358ba22_') was aborted:ERROR: invalid byte sequence for encoding "UTF8": 0x00 Call getNextException to see other errors in the batch. [Sanitized]

Environment

  • 7.2〜7.4
  • 7.3〜7.4

解決策

  • 問題は、データベースに "\u0000" という文字列を含むデータがある(またはある)ことです(例えば、SELECT * FROM DDMContent WHERE data like '%\u0000 %' というコマンドで見つけることができます)。 そのような記録は、アップグレード時にそのエラーを引き起こします。
  • この記事を書いている時点では、まだ深い根本的な原因は判明していません。例えば、これらの部品、これらの文字は、通常の操作でどのようにデータベースに追加されるのか
  • これは、アップグレード前のオリジナルのデータベースで実行する必要があるgroovyスクリプトで処理することができます。 このスクリプトはDDMContentテーブルをスキャンし、"\u0000"リテラル文字列のインスタンスを削除します(注:DDMContent全体を削除するのではなく、DDMContentのデータから "\u0000" 文字列を削除するだけです)。
  • RemoveUnicodeNullValuesFromDDMContentData.groovy 7.2用スクリプトはこの記事に添付されています。

まとめると

  1. 元のデータベース(またはそのコピー)に戻ってください。 失敗したアップグレードスクリプトを実行したほうを落とすことができます。
  2. 必ずバックアップをとっておいてください。
  3. その上でgroovyスクリプトを実行します。 (UIから、サーバー管理/スクリプトで)
  4. その後、このデータベースで再度upgrade.shを実行してみてください。

スクリプトによって問題のある文字が削除されたので(ステップ3)、アップグレードによってこの問題が発生することはもうありません。

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base