Edited at

intra-martのテナント環境セットアップ時にjava.sql.SQLExceptionが発生したときの対策

More than 3 years have passed since last update.


前提

intra-martのテナント環境セットアップ時にエラーが発生し失敗した際の対策方法です。

以下の環境での情報となります。

app
version

resin
4.0.48

intra-mart
8.0.11

Oracle
12c

Postgresql
9.5.3


エラー内容

セットアップ後、以下のようなエラーが発生します。

セットアップ結果.png

ログを確認すると以下のExceptionが発生しています。

ログの確認手順:インポートエラーの原因をログから追跡する


oracle

java.sql.SQLException: Schema changed



postgresql

org.postgresql.util.PSQLException: ERROR: cached plan must not change result type



対策

resin-web.xmlのprepared-statement-cache-sizeを「0」に設定することで、エラーを回避可能です。

テナント環境セットアップ処理中のみ「0」に設定し、その後はもとの値に戻すという作業が必要そうです。

resin-web.xmlの設定方法は以下となります。

プリペアドステートメントキャッシュ設定

後で気づいたのですが、以下のintra-martのドキュメントにて対応策が記載されていました。

Exceptionの内容でググっていて、ドキュメントになかなかたどりつけませんでした。

Resin で PreparedStatement の キャッシュサイズに大きな値を指定している場合にテナント環境セットアップが失敗する