legacy-knowledge-base
公開されました Sep. 10, 2025

サーバーログにCannotAcquireLockExceptionが表示される

written-by

Daniel Couso

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

問題

  • サーバーログに CannotAcquireLockException が何度か表示される:
ERROR [http--10.1.1.133-8080-281][JSONWebServiceServiceAction:97] 
org.springframework.dao.CannotAcquireLockException: PreparedStatementCallback;
SQL [INSERT INTO Users_UserGroups (userGroupId, userId) VALUES (?, ?)];
Unknown error 1205; nested exception is java.sql.SQLException: Unknown error 1205

Environment

  • ポータル6.2

解決策

  • このエラーがログに表示される場合は、 INSERT クエリを実行するために、データベースが Users_UserGroups テーブルのロックを取得できないことを示します。
    MySQL がデータベースとして使用され、Users_UserGroups テーブルで多くの SELECT クエリが実行されている場合、データベースは SELECT クエリを優先して実行してから INSERT クエリを実行することができる。
    このタイムアウトが MySQL の innodb_lock_wait_timeout プロパティで指定された時間を超えた場合、CannotAcquireLockException エラーが発生します。

  • portal-ext.propertiestable.mapper.cache.mapping.table.names プロパティに該当するテーブルを追加することにより、データベース上で実行される SELECT クエリの数を減らすことができます。この場合、このテーブルに対するクエリはポータルによってキャッシュされます:
    table.mapper.cache.mapping.table.names=Users_UserGroups
    新しい値が適用されるには、ポータルを再起動する必要があります。

追加情報

  • 6.2 Fix pack Portal 108で、このプロパティは table.mapper.cacheless.mapping.table.namesに変更され、デフォルトでは逆の動作、つまりすべてのテーブルがキャッシュされ、このプロパティで指定したテーブルのみがデータベースに対して実行されるようになりました。
did-this-article-resolve-your-issue

legacy-knowledge-base