「JYP2278E SQL文識別子で指定している表が変更されました」というエラーについて

Javaアプリケーション実行時に、「JYP2278E SQL文識別子で指定している表が変更されました」というエラーが発生しました。対処方法を教えてください。
JYP2278Eのメッセージの意味は、いったんPREPARE処理したSQL文が処理対象にしている表の定義が変更されたため、再度PREPARE処理を行う必要がある、というものです。
しかし、JDBCドライバのステートメントキャッシュ機能を使用していると、PREPARE処理のやり直しができません。これは、ステートメントキャッシュ機能によって、1回目のPREPARE処理の結果が保持されているためです。prepareStatementメソッドを再実行してPREPARE処理をやり直しても、1回目のPREPARE処理の実行結果を内部的に利用してしまいます。そのため、Symfowareに対するPREPARE処理が実行されません。
回避するためには、ステートメントキャッシュ数を0に設定することで、ステートメントキャッシュ機能を使わないようにしてください。
現象が発生した場合には、Interstageのワークユニットを再起動するなど、アプリケーションの再起動を行ってください。

ステートメントキャッシュ機能と競合する処理には、以下のものがあります。

  • 動的カーソルで参照している表に対して、rdbddlexコマンドで定義情報の変更準備を行い、rdbddlfixコマンドで定義情報の変更内容の確定を行う。

  • 動的カーソルで参照している表のインデックスに対してrdbalidxコマンドで非活性状態に設定する。

  • 動的カーソルで参照している表に対して、別の応用プログラムから表の定義変更文(ALTER TABLE文)を実行する。

  • 応用プログラムで参照した表に、創成していない表のDSI(CREATE DSI文で定義した直後のDSI)が含まれており、そのDSIに対してrdbfmtコマンド、または、rdbsloaderコマンドでDSIの創成を行う。

  • rdbexdsiコマンドで、DSIをSQL処理の対象から除外または除外の解除を行う。


このうち、rdbexdsiコマンドの使用により影響を受ける範囲は、全アプリケーションです。rdbexdsiコマンドが実行されたとき、実行済みのSQL文については、再度PREPARE処理を実行してください。

製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 運用/保守
このページの先頭へ